Symfony的link_to helper方法忽略了第三个参数

时间:2011-02-28 10:01:53

标签: php symfony1 routing hyperlink helper

我正在尝试使用Symfony路由系统在导航菜单中生成与环境无关的链接。我在routing.yml中有以下路线:

# Navigation menu rules
sample:
  class:   sfDoctrineRouteCollection
  options: { model: Sample }

# Default rules (catch all)
homepage:
  url:    /
  param:  { module: sample, action: index }

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /:module/:action/*

在导航菜单中,我对link_to辅助方法进行了以下调用,根据实际部分进行了自定义:

<?php
...
if ( $actualSection === 'sample' )
    echo link_to('Sample', 'sample', array('class' => 'actualSection'));
else
    echo link_to('Sample', 'sample');

...
?>

问题是link_to正在生成如下链接:

<a href="/sample?class=actualSection">Samples</a>

而不是

<a href="/sample" class="actualSection">Samples</a>

link_to辅助方法与路由系统一起使用以生成后一个链接的正确方法是什么?

根据link_to documentation,内部URI应以“模块/动作”格式编写,因此我猜可以省略初始/

2 个答案:

答案 0 :(得分:4)

你的第二个论点似乎不正确。要么输入路径的名称,前缀为'@'(如@sample_index或sfDoctrineCollection生成的任何路径),要么使用“module / action format”=&gt; sample/index

答案 1 :(得分:2)

尝试这样的事情:

echo link_to('Sample', 'sample', array(), array('class' => 'actualSection'));

第一个数组 - 路由选项,第二个 - html属性