我在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
提前获得帮助。
答案 0 :(得分:1)
我认为在调度请求时会抛出异常。然后框架尝试加载error
控制器,我猜你的include/Controllers
目录中不存在。这就是消息error
中存在"Invalid controller specified (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();