我已经创建了一个包含以下详细信息的应用程序:
1- zf创建项目MyApp
2- zf create module admin
3- zf create controller Index 1 admin
MyApp / application / modules / admin / controllers / IndexController.php:
class admin_IndexController extends Zend_Controller_Action
{
public function init()
{
error_reporting(E_ALL);
ini_set('display_errors', 'On');
}
public function indexAction()
{
$aa = new Admin_Model_DbTable_Posts();
}
}
application.ini:
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
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.frontController.moduleDirectory = APPLICATION_PATH "/modules"
MyApp / application / modules / admin / models / DbTable / Posts.php:
class Admin_Model_DbTable_Posts extends Zend_Db_Table_Abstract
{
public function init()
{
}
}
在这一点上我得到错误:
Fatal error: Class 'Admin_Model_DbTable_Posts' not found in /var/www/MyApp/application/modules/admin/controllers/IndexController.php on line 16
当我把这一行放在application.ini
上resources.modules[] =
使用这些内容在admin文件夹中添加bootstratp.php
class Admin_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
经过长时间的请求后,我收到了这个错误:
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.
我该怎么做才能让它发挥作用?
答案 0 :(得分:1)
一些有用的提示
resources.modules[] = "admin" resources.modules[] = "default"
确保在application.ini文件中对字符串文字使用双引号"
而不是单引号'
。
如果未找到Admin_Model_DbTable_Posts
,则zend_autoloader或包含路径未完成。您可以将zend自动加载器设置为使用后备选项,并在Bootstrap.ini中使用以下代码
protected function _initAutoload() { $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->registerNamespace(array('Admin_')); $autoloader->setFallbackAutoloader(true); $autoloader->suppressNotFoundWarnings(false); return $autoloader; }
希望它有所帮助!
答案 1 :(得分:1)
class Admin_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
应该是
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
}
使用 Module_Bootstrap 应该可以为您的应用程序提供模块资产。我不会做任何其他改变。
忽略之前的答案,如果您没有使用任何标准设置,请提供良好的建议,但您的设置显然是标准的。您可能需要在admin_IndexController中大写 admin ,但可能不是。
答案 2 :(得分:0)
我把shawndreck和RokyFord的答案放在一起解决了这个问题。感谢这两个主题。我实际上已经过了configed application.ini文件。我做了以下事情:
我重新创建了另一个简单的项目,它工作正常,所以我比较了两个项目文件。
然后我明白了改变
Zend_Application_Bootstrap_Bootstrap
到
Zend_Application_Module_Bootstrap
并在application.ini中放置resources.modules [] =“admin”,它可以工作。