首页 | PHP资讯 | 技术专栏 | 资源共享 | PHP培训 | PHP职场 | 图书 | PHP ON WIN | PHP圈子 | PHPer学习大本营
返回列表 回复 发帖

ZF不需要配置apache rewrite模块的方法

ZF不需要配置apache rewrite模块的方法

本帖最后由 七月十五 于 2009-5-20 08:30 编辑

这篇文章本来是不需要写的..既然有人问到..就写一份了..其实bantu兄已经把关健部分写了..但是设置上有点不同..HOHO

1.在htdocs目录下建立一个test目录,把最新的zf的library(zf 1.5或者svn最新的,1.4是乎也可以,没有测试过.呵呵)

2,进行php.ini设置

找到include_path

加上一条这样的字符串"xxx\htdocs\test\library" xxx表示你的路径

3.写index.php入口文件,放入xxx\htdocs\test\www目录中.

[PHP]
<?
require_once 'Zend.php';
//include Zend.php后,就可以用loadClass函数指定类名,自动加载需要ZF的类
function __autoload($class)
{
    Zend::loadClass($class);
}

$view = new Zend_View;
//设置路径
$view->setScriptPath('../');
//放入对象寄存器
Zend::register('view', $view);

//这里是关健,比以前的方式多了两行代码,ZF的做法是借鉴ROR的.
//如果要了解多点信息,可以看看这里http://manuals.rubyonrails.com/read/chapter/65
//预告一下,下一个版本,zf官方说了要改进一下URL模式的,可能是跟ror一样用配置文件来选择的URL模式吧.

$router = new Zend_Controller_RewriteRouter();
$controller = Zend_Controller_Front::getInstance();
$controller->setRouter($router);

//设置路径
$controller->setControllerDirectory('../');
$controller->dispatch();

?>
[/PHP]

4.写controller文件


5.写view
略.

6.http://url/test/www/index.php/就可以浏览了.

PS:用此方法..哪位老兄可以试试在IIS下使用ZF.^_^..可以的话,写一篇文章..我会加精的哦.说到做到.^_^

有人问虚拟主机的事情,就再写写吧,免得有人再问..如果你是用虚拟主机的..配置不了php.ini
还有一个方法,这样就不用设置了..用ZF就不存在问题了(db库目前还用不了,毕竟支持pdo的不多)
我们修改一下入口文件index.php,在最上面加一行代码,如下:

[PHP]

<?
//一定要加这句,路径具体而定,这里是根据上面的例子来的..
set_include_path('../library');

require_once 'Zend.php';
//include Zend.php后,就可以用loadClass函数指定类名,自动加载需要ZF的类
function __autoload($class)
{
    Zend::loadClass($class);
}

$view = new Zend_View;
//设置路径
$view->setScriptPath('../');
//放入对象寄存器
Zend::register('view', $view);

//这里是关健,比以前的方式多了两行代码,ZF的做法是借鉴ROR的.
//如果要了解多点信息,可以看看这里http://manuals.rubyonrails.com/read/chapter/65
//预告一下,下一个版本,zf官方说了要改进一下URL模式的,可能是跟ror一样用配置文件来选择的URL模式吧.

$router = new Zend_Controller_RewriteRouter();
$controller = Zend_Controller_Front::getInstance();
$controller->setRouter($router);

//设置路径
$controller->setControllerDirectory('../');
$controller->dispatch();

?>
[/PHP]

[ 本帖最后由 mikale 于 2006-8-2 07:03 编辑 ]

TOP

测试了,遇到一个问题:

如果想给加上一些自定义的参数,是否要这样写 http://url/test/www/index.php/index/index/key1/value1(key1=value1为自定义参数)?
在控制器中indexController中,如何获取key1的值value1?

TOP

原帖由 shimch 于 2006-8-5 11:49 发表
测试了,遇到一个问题:

如果想给加上一些自定义的参数,是否要这样写 http://url/test/www/index.php/index/index/key1/value1(key1=value1为自定义参数)?
在控制器中indexController中,如何获取key1的值 ...





是啊。我也是遇到这个问题的啊。

以前用$this->_getParam('key1');

就可以取得了。可现在取不到???
MVMMALL首席CEO
www.mvmmall.com

TOP

原帖由 shimch 于 2006-8-5 11:49 发表
测试了,遇到一个问题:

如果想给加上一些自定义的参数,是否要这样写 http://url/test/www/index.php/index/index/key1/value1(key1=value1为自定义参数)?
在控制器中indexController中,如何获取key1的值 ...


$this->_getParam('key1');

这样可以做到..

TOP

根据上面的介绍..写个controller..自己试试..我是测试成功的说.

给个例子算了


class IndexController extends Zend_Controller_Action
{
      
    public function indexAction()
    {
       Zend::dump($this->_getParam('key1'));
    }

    public function viewAction()
    {
            Zend::dump($this->_getAllParams());
    }

}



试试类似这样的两个连接就知道了..根据自己的情况做适当的修改.

http://localhost/test/www/index. ... /value1/key2/value2

http://localhost/test/www/index.php/index/index/key1/value1/

[ 本帖最后由 mikale 于 2006-8-6 02:39 编辑 ]

TOP

请问如何设置router才可以去掉网址中的那个index.php呢? 谢谢!

TOP

原帖由 console_zhao 于 2006-8-6 20:30 发表
请问如何设置router才可以去掉网址中的那个index.php呢? 谢谢!


用最原始的方法..就可以去掉index.php,比如blog实例的教程上的配置方法..

TOP

那不用apache rewrite模块又怎么去掉index.php

TOP

原帖由 console_zhao 于 2006-8-6 20:49 发表
那不用apache rewrite模块又怎么去掉index.php

你如果找到了这种方法,可以告诉我..

TOP

返回列表