0

これが私のプロジェクト構造です: http://img823.imageshack.us/img823/7047/68818300.png

php.ini を使用してデータベースに接続しました:

[production]
phpSetting.display_status_errors = 1
phpSetting.display_errors = 1

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "front"

resources.frontController.baseUrl = "http://localhost:8080/zendfirst/"

resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = ""
resources.db.params.dbname = "estore"

autoloadernamespaces.extendlib = "ExtendLib_"

resources.layout.layout = "index"
resources.layout.layoutPath = APPLICATION_PATH "/templates/front/default"

[developer : production]
phpSetting.display_status_errors = 0
phpSetting.display_errors = 0

Googleで検索しましたが、やり方がたくさんありましたが、方法がわかりません。私はこの方法を試していますが、うまくいきません。これが私のモデルです:

<?php

    class Model_User {
        protected $db;

        public function __construct() {
            $this->db = Zend_Registry::get('db');
        }

        public function listAll() {
            $sql = $this->db->query("SELECT * FROM SanPham ORDER BY Id DESC");
            return $sql->fetchAll();
        }
    }

そして、これは私のコントローラーです:

<?php

class IndexController extends Zend_Controller_Action {

    public function indexAction() {
        $muser = new Model_User();//error here
        $data = $muser->listAll();
        echo "<pre>";
        print_r($data);
        echo "</pre>";
    }

    public function viewAction() {

    }

    public function preDispatch() {

    }

}

コントローラーはユーザーモデルが何であるかを知りません。コントローラーでモデルを呼び出すにはどうすればよいですか? ここに私のプロジェクトがあります: https://www.box.com/s/idw5twyyo41yn8gq1kfe

4

2 に答える 2

1

Bootstrap.php に入れます

protected function _initAutoLoad(){
    $resource_loader = new Zend_Loader_Autoloader_Resource(
        array(
            'basePath'  => APPLICATION_PATH,
            'namespace' => '',
            'resourceTypes' => array(
               'model' => array(
                    'path'      => 'models/',
                    'namespace' => 'Model_'
               ),
               ),
        )
    );
    return $resource_loader;
}

またはあなたのiniファイルに入れます:

appnamespace = "Application" 

モデルに名前を付けるより

class Application_Model_User{ ... }
于 2013-06-09T08:31:28.560 に答える
0

問題は、Autoloader が Model_Users の場所を認識していないことです。

リソース オートローダーで構成する必要があります。

何らかの理由でこれがライブラリ コードである場合 (つまり、インクルード パスの 1 つのすぐそばにある Model ディレクトリの下) autoloadernamespaces.models = "Model_"、ini ファイルに追加するだけです。

于 2013-06-09T04:12:59.007 に答える