Yii中路由的初始化和使用(与Zend比较)

时间:2012-09-12 13:13:14

标签: zend-framework yii

我在Zend框架方面有一些经验。最近我开始使用Yii。

现在我试图在这个框架中找到一些类比。

在Zend几乎每条路线都有自己的名字。您可以创建例如下一个路线'photos_map':

$router->addRoute('photos_map',
    new Zend_Controller_Router_Route('map/:city', array(
        'controller' => 'photos', 
        'action' => 'map',
        'city' => ''
    ))
);

并在view url helper中使用它:

echo $this->url(array(), 'photos_map') // output '/map'

在Zend中,您也可以传递参数(在上面的示例中为city),无论是在初始化还是在url-helper调用中。

如果您想更改网址,只需在初始化map/:city中更改参数字符串即可。它非常有用,因为您无需在代码中的任何位置将旧网址替换为新网址。

我的问题是这可能在Yii?我流利地阅读了文档,并开始认为Yii路线的功能要弱得多。这是牺牲表现还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

与Zend相比,Yii中的路由简单且有点不同。在Yii中,使用控制器呈现视图,因此要呈现视图,您必须调用控制器。例如,您位于网站的索引页面中,并且您想要进入预览页面。

$url = Yii::app()->createUrl('/site/preview');
//Here site is the name of the controller class and preview is the name of the action
//You will need to have a controller named SiteController in your controllers folder
//You will need to have a folder named "site" in your views folder
//You will need to have an action(function) defined as actionPreview in your controller class

现在在控制器类中,(在本例中为SiteConroller.php),

public function actionPreview()
{
     $this->render('preview',array('data'=>''));
     //will render preview.php located in views/site/preview.php
     //u can pass parameters in array as shown above, in this case data 
}

如果你想更改网址,你只需更改部分$ this-> render('your_view_file.php'); 我希望它有所帮助..........随意提问......