【问题标题】:Zend Framework Bootstrap.php, Database Model, and FormZend Framework Bootstrap.php、数据库模型和表单
【发布时间】:2012-07-31 19:09:02
【问题描述】:

所以我正在研究一个示例数据库项目。 我有一个 LoginController.php、一个 Faculty 数据库和一个登录页面 (phtml)。

我收到错误 Fatal error: Class 'Faculty_DB' not found in /usr/local/zend/apache2/htdocs/InternProject1/application/controllers/LoginController.php 第 25 行

在 LoginController.php 中,我有以下内容(加上更多内容):

public function indexAction()
{
    $login = new Form_Login();
    //$this->view->login = $login; 

    $request = $this->getRequest();
    if($request->isPost())
    {
        $data = $request->getPost();
        //$this->isValid(
        if($this->getRequest()->getPost())
        {
            $username = $request->getParam('username');
            $password = $request->getParam('password');
            // echo " What you entered is: $username and $password";
//line 24       
            $faculty = new Faculty_DB();
//then conditions for validation.

这个参考

class Faculty_DB extends Zend_Db_Table_Abstract

位于 application/models/ 目录中

我在 Bootstrap.php 中有以下内容

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    protected function _initAutoload()
    {
        $autoLoader = Zend_Loader_Autoloader::getInstance();
        $autoLoader->registerNamespace(array('App_'));
        $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'basePath'  => APPLICATION_PATH,
            'namespace' => '',
            'resourceTypes'     =>
                array('form'=>
                    array('path'        => 'forms/',
                        'namespace'     => 'Form_'
                    ),
                ),
            ));
        return $autoLoader;         
    }
}

关于如何解决这个问题的任何线索? 我尝试了以下方法:

 protected function _initResourceAutoloader()
 {
     $autoloader = new Zend_Loader_Autoloader_Resource(array(
         'basePath'  => APPLICATION_PATH,
         'namespace' => 'Application',
     ));

     $autoloader->addResourceType( 'model', 'models', 'Model');
     return $autoloader;
 }

但是当我这样做时,它告诉我找不到我的 Login_Form;

【问题讨论】:

  • 尝试命名您的模型类 Model_Faculty_DB 并重命名文件

标签: php database zend-framework login model


【解决方案1】:

鉴于您的应用程序命名空间是Application,请尝试:

  • 将您的教师数据库课程放在application/models/Faculty.php
  • 将其命名为Application_Model_Faculty
  • Application_Model_DbTable_Faculty 扩展它
  • 将 DbTable 类放入application/models/DbTable/Faculty.php

由于您使用的是Zend_Application,它会为您设置自动加载器和特殊前缀,如Form_Model_Plugin_ 等,因此您可以安全地删除_initAutoload 和@ 987654332@ 来自您的引导程序。

【讨论】:

  • 是的,德鲁说的。使用 Zend Framework Defaults 它将为您节省很多头痛(直到您有令人信服的理由来更改它们。因为我不喜欢它的外观。不引人注目)。您当前所做的一切都是覆盖预设的默认值,请参阅framework.zend.com/manual/en/…,了解默认命名空间的好主意。
  • Faculty.php 的路径应该是application/models/DbTable/Faculty.php,而不是application/model/DbTable/Faculty.php,否则我同意:> +1
  • @WildWorxUK 感谢您注意到这一点,我更新了答案以使用 models,而不是 model 作为路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多