2013-06-09 2 views
0

Вот моя структура проекта: http://img823.imageshack.us/img823/7047/68818300.png

Я подключен к базе данных с использованием php.ini:Zend Framework 1.x - Как получить данные из базы данных?

[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

ответ

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; 
} 

Или положить в ини файле:

appnamespace = "Application" 

чем назвать модель

class Application_Model_User{ ... } 
+0

Но у меня есть три mmodules, он все еще не знает модель пользователя. Я только что обновил свой проект выше. –

+0

, так что ... Установите это в главном бутстрапе .. – tasmaniski

+0

Я сделал, как вы сказали, но это не сработало. Посмотрите мой проект. –

0

Проблема заключается в том, что автозагрузчик не знает, где находится Model_Users.

Вам необходимо настроить конфигурацию в resource autoloader.

Если по какой-то причине это код библиотеки (т.е. в каталоге модели сразу одного из включаемых путей), то просто добавьте autoloadernamespaces.models = "Model_" в свой ини файл

+0

Но у меня есть три mmodules, он все еще не знает модель пользователя. –

+0

Я только что обновил свой проект выше. –

Смежные вопросы