Zend Framework 配置
一.
如果你使用了 .htaccess 文件, 启用了 RewriteEngine ,那么你要在 Apache 服务器中的 httpd.conf 做两件事:
1. 启用 mod_rewrite.so -------大约在 http.conf 106行处,去掉
LoadModule rewrite_module modules/mod_rewrite.so 前的 "#".
2. 使 .htaccess 中的配置生效, 需设定 AllowOverride All -------大约在 200行处, 原来默认的为 None
二.
如果你要在 Controller 类的动作方法中 使用 Zend_View ->render 来调用 视图脚本,必须将 视图渲染 ViewRenderer 关掉,因为Zendframe 默认它是开启的 (这样 Controller 类会默认去找 view/scripts/XXX/yyy.phtml ------XXX你的控件器 XXXController, yyy你的动作YYYAction ), 只有将 ViewRenderer 关闭, 你才能唯一手动进行 视图渲染 控制。
如果你不关闭ViewRenderer 那么控制器首先用ViewRenderer去解析views/scripts/XXX/yyy.phtml,然后再解析Zend_view::render()指定的脚本,这样就解析了两个脚本,很有点趣。
如果你不关闭ViewRenderer 并且你已经设定好了正确的 Zend_View::setScriptPath() 路径,那么你的yyy.phtml 和 render() 指定的脚本必须要同时存在,如果少一个也不能解析。
关闭方法:
全局关掉,用Zend_Controller_Front实例,在Zend_Controller_Front ->dispatch() 之前关闭:$front->setParam('noViewRenderer',true);
只针对某个具体的action关闭,在XXXController->yyyAction()中:$this->_helper->viewRender->setNoRender()。
最好只针对某个action关闭ViewRender。
<?php
require_once ' Zend/Controller/Front.php';
$front = Zend_Controller_Front ::getInstance();
$front->setControllerDirectory( array(
'default' => '/path/to/controllers',
...
));
//也可以使用 $front->addModuleDirectory('/path/to/application/modules'); 而不需要指定每一个'模块'=>'路径'
$front -> setParam('noViewRenderer',true);
$front -> dispatch();
?>
三.
Zend_Controller_Front -> setControllerDirectory('...') 和
Zend_View -> setScriptPath('...')
两个里面的 路径都是针对 Web 根目录 index.php 文件为相对路径.