0

我在 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'

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

如果您想更改 url,您只需将初始化中的参数字符串更改map/:city为您想要的。它非常有用,因为您不需要在代码中的任何地方都将旧网址替换为新网址。

我的问题是这在 Yii 中可能吗?我流利地阅读了文档并开始认为 Yii 路由没有那么强大。这是牺牲性能还是我错过了什么?

4

1 回答 1

1

Yii 中的路由很简单,与 Zend 相比有点不同。在 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 
}

如果你想改变 url,你可以简单地改变部分 $this->render('your_view_file.php'); 我希望它有帮助............随时提问......

于 2012-09-13T07:35:09.140 回答