Yii,createUrl没有按预期工作

时间:2012-07-14 16:45:52

标签: yii yii-routing

我在视图中执行以下操作:

 <li><a href='<? Yii::app()->controller->createUrl('sources'); ?>'>sources</a></li>

但是'sources'没有附加到路径,而是代码只返回当前控制器的路径。

有谁能说明为什么这可能是我?代码在一个模块中。

我的网址规则如下:

'rules'=>array(
 '<controller:\w+>/<id:\d+>'=>'<controller>/view',
 '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
 '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
               ),

3 个答案:

答案 0 :(得分:12)

你应该尝试两件事

要获取绝对URL而不是相对于当前控制器或操作,请添加一个前导'斜杠',如:

    Yii::app()->createUrl('/sources/view');

你还应该确保你没有做一些愚蠢的事情,比如忘记使用 echo :),有时会发生在我身上......

    <li><a href='<? echo Yii::app()->controller->createUrl('sources'); ?>'>sources</a></li>

答案 1 :(得分:3)

首先,为什么你甚至试图从视图中访问控制器?这是毫无意义的,它违背了所有的模式。

此外,您可以使用Yii::app()->createUrl()创建网址。此外,您可能会从阅读有关如何使用此功能的文档中受益。

'sources'不适合任何路由模式。请尝试以下操作:

  • Yii::app()->createUrl('sources/view');
  • Yii::app()->createUrl('sources/foobar');

答案 2 :(得分:1)

你忘记了回声:

    <a href="<?php 
      echo Yii::app()->createUrl("[/][CONTROLLER][/]ACTION", array("view"=>"VIEW")); 
    ?>">Link name</a>