【问题标题】:Zend Framework 1.x - How do I get data from database?Zend Framework 1.x - 我如何从数据库中获取数据?
【发布时间】:2013-06-09 04:01:37
【问题描述】:

这是我的项目结构: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

我在谷歌上搜索过,但有很多方法可以做,但我不知道如何做。我正在尝试这种方式,但它不起作用。这是我的模型:

<?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

【问题讨论】:

    标签: php zend-framework pdo autoloader


    【解决方案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{ ... }
    

    【讨论】:

    【解决方案2】:

    问题是自动加载器不知道 Model_Users 在哪里。

    您需要在resource autoloader 中进行配置。

    如果由于某种原因这是库代码(即在您的包含路径之一的模型目录下),那么只需将 autoloadernamespaces.models = "Model_" 添加到您的 ini 文件中

    【讨论】:

    • 但是我有三个mmodules,它仍然不知道用户模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多