我在localhost中创建了一个项目,所有请求都重定向到htdocs/index.php文件。通过链接http://localhost/TestProject/index.php中的代码是
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
$controller = Zend_Controller_Front::getInstance();
echo $controller->getControllerDirectory();
$controller->setControllerDirectory('/var/www/TestProject/include/Controllers');
$controller->dispatch();
所有控制器都位于include目录中。我在IndexController.php中创建了多个控制器,另一个是TestController.php在这些文件中,我创建了两个操作indexAction()和displayAction()
这是IndexController.php 的代码
Class IndexController extends Zend_Controller_Action{
public function indexAction(){
echo "Index Index Jamla";
}
public function displayAction(){
echo "Index Display Jamla";
}
}
现在每当我访问http://localhost/TestProject/它显示以下异常
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with
message 'Invalid controller specified (error)' in /usr/share/php/
libzend-frameworkphp/Zend/Controller/Dispatcher/Standard.php:248 `enter code here`
Stack trace: #0 /usr/share/php/libzend-framework-php/Zend/Controller/Front.php(954):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
Object(Zend_Controller_Response_Http)) #1 /var/www/TestProject/htdocs/index.php(14):
Zend_Controller_Front->dispatch() #2 {main} thrown in /usr/share/php/libzend-framework
php/Zend/Controller/Dispatcher/Standard.php on line 248
感谢thnkx提前提供的帮助。
我认为在调度请求时抛出了一个异常。然后,框架尝试加载error
控制器,我猜它在include/Controllers
目录中不存在。这就是消息"Invalid controller specified (error)"
中存在error
的原因。
框架抛出异常的原因有很多,但我的第一个猜测是您没有定义任何视图脚本。因此,它们无法加载,这将引发异常。
你有两种可能性:
- 在适当的位置创建视图脚本。对于将为
include/views/scripts/index/index.phtml
的索引控制器的索引操作。默认情况下,路径为$yourControllerDir . "/../views/scripts/{$controllerName}/{$actionName}.phtml"
(伪代码) -
使用以下代码禁用视图脚本的默认呈现:
// ... your original code $controller->setParam('noViewRenderer', true); // disable view rendering $controller->dispatch();