2014-02-07 4 views
2

Я пытаюсь вставить данные в базу данных, но проблема с моделью. пожалуйста, помогите Фатальная ошибка: Класс 'Model_DbTable_Vendor' не найден в D: \ WAMP \ WWW \ ММЗ \ Application \ контроллерах \ VendorController.php на линии 9zend framework 1.12 - Fatal error: Class 'Model_DbTable_Vendor' не найден

применение/конфиги/Application.ini

[production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.params.displayExceptions = 0 

resources.layout.layout = "layout" 
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" 
[resources.frontController.baseUrl = "/mmz/public"] 
resources.view[] = "" 
resources.view.doctype = "html5" 
resources.view.encoding = "utf-8" 
resources.view.contentType = "text/html;charset=utf-8" 
resources.modules[] = "admin" 

resources.db.adapter = "pdo_mysql" 
resources.db.params.host = "localhost" 
resources.db.params.username = "root" 
resources.db.params.password = "" 
resources.db.params.dbname = "catalog" 
resources.db.isDefaultTableAdapter = true 
resources.db.params.charsert = "utf8" 

[staging : production] 
resources.view[] = 
[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

Bootstrap.php

<?php 

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { 

     protected function _initViewHelpers() { 
      $view = new Zend_View(); 
      $view->headTitle('Main Title')->setSeparator(' - '); 
     } 

    } 

приложение/модели/DBTable/Vendor.php

<?php 

require_once("Zend/Db/Table/Abstract.php"); 

class Model_DbTable_Vendor extends Zend_Db_Table_Abstract { 

    protected $_name = "vendor"; 

    public function init() { 

     $this->getAdapter()->query("SET NAMES 'utf8'"); 
    } 

    public function addVendor($vendor_name) { 
     $this->insert($vendor_name); 
    } 
} 

применение/формы/Vendor.php

<?php 
class Application_Form_Vendor extends Zend_Form 
{ 
    public function init() 
    { 
     $this->setMethod('post'); 

     $this->addElement('text', 'vendor_name', array(
      'label'  => 'Vendor name:', 
      'required' => true, 
      'filters' => array('StringTrim') 
      // 'validators' => array(
      //  'EmailAddress', 
      //) 
     )); 

     $this->addElement('submit', 'submit', array(
      'ignore' => true, 
      'label' => 'Add new', 
     )); 

     $this->addElement('hash', 'csrf', array(
      'ignore' => true, 
     )); 
    } 
} 

приложение/контроллеры/VendorController.php

<?php 

class VendorController extends Zend_Controller_Action { 

    protected $vendor; 

    public function init() { 
     /* Initialize action controller here */ 
     $this->vendor = new Model_DbTable_Vendor(); 
    } 

    public function indexAction() { 
     $request = $this->getRequest(); 
     $form = new Application_Form_Vendor(); 
     $this->view->form = $form; 

     if ($this->getRequest()->isPost()) { 
      if ($form->isValid($request->getPost())) { 
       $vendor_name = $form->getValue('vendor_name'); 
       $this->vendor->addVendor($vendor_name); 
      } 
     } 

    } 

} 

приложение/просмотров/скрипты/продавец/index.phtml

Vendor form 
<?php 
$this->form->setAction($this->url()); 
echo $this->form; 
+0

где ваша установка автопогрузчики/конфигурации? ZF не будет знать, где искать класс модели, если вы не зарегистрировали пространство имен 'Model_' с автозагрузчиком. – JamesHalsall

+0

не является стандартным путем' Model_'? Я предполагаю, что автозагрузчик перемещается по пути к классу модели: попробуйте использовать имя папки, которое в точности совпадает с именем псевдопространства модели: 'application/models/DbTable/Vendor.php' – cypherabe

+0

use Префикс приложения, когда вызов модели из контроллера. –

ответ

1

вместо ,

public function init() { 
     /* Initialize action controller here */ 
     $this->vendor = new Model_DbTable_Vendor(); 
    } 

использование,

public function init() { 
     /* Initialize action controller here */ 
     $this->vendor = new Application_Model_DbTable_Vendor(); 
    } 

в файле .ini

resources.frontController.params.displayExceptions = 1 // error reporting on 
+0

нормально, но когда я изменил в приложении/модели/DBTable/Vendor.php Model_DbTable_Vendor() для Application_Model_DbTable_Vendor() и сделать те же изменения в контроллере, у меня есть этот случай: Произошла ошибка ошибка приложения – zaca45

+0

у вас есть не соответствует тому, что я предложил, см. ответ выше. Изменить только контроллер, а не файл модели, и включить отчет об ошибках в файле application.ini –

+0

и приветствовать переполнение стека, если вы найдете ответ полезным, см. [прием ответа] (http: //meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

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