嘿。
我打算为我的菜单组件制作一个“当前”类,创建菜单。为了找出当前的类,建议使用$this>getContext()->getRouting()->getCurrentRouteName();
。为此,我必须为将要存在的所有菜单元素设置路由。
让我们说到目前为止我有两个元素,一个用于首页,一个用于客户。每当我浏览首页时,无论操作和参数是什么,我都希望上面的代码返回“frontpage”。客户也一样。
我现在的客户规则如下: routing.yml中
customer: param: { module: customer }
我认为设置网址并不重要,我已经将模块指定为客户。无论使用何种操作,menu元素都应具有“current”类。
我如何链接:
if ($current == $name){ echo link_to($name, $link, array("class" => "selected")); }else { echo link_to($name, $link); }
现在转到“customer / some_action”的链接($ link)不起作用,它们只显示为“/”。所以我想在$ link周围使用url_for,这也不起作用,结果相同。
我的路由规则一定有问题...因为当我输入时手动说/ customer / new,我可以看到该页面。如果我从模板中写出$this>getContext()->getRouting()->getCurrentRouteName();
,则表示默认。所以我的规则绝对不起作用。我也尝试了其他规则,但没有任何人工作。诀窍是制定一个适用于模块客户下的任何规则的规则。
是的,我在更改了每个规则后清除了缓存。
非常感谢。
编辑: 我使路由规则有效,但不适用于客户模块下的所有操作。我必须为每个动作制定规则。但是,链接仍然被打破,他们显示“/".
我的新规则:
customer_index: url: /:module param: { module: customer, action: index } customer_new: url: /:module/:action param: { module: customer, action: new }
这些链接都不起作用:
echo link_to("Customers", "@customer_index", array("module" => "customer"));
echo link_to("New customer", "@customer_new", array("module" => "customer"));
答案 0 :(得分:1)
是的,这也是我几次完成它的方式。您需要单独的路由规则才能使用getCurrentRouteName()。
您对链接的问题是您无法以这种方式传递“module”参数。它不是Symfony link_to() helper的有效参数。相反,你可以这样传递它:
link_to('Customers', '@customer_index?url_variable=something');
customer_index:
url: /:url_variable
param: { module: customer, action: index, url_variable: some_default_value }
默认值是可选的,但是如果您没有传递变量并且路由没有默认值,则link_to帮助器将抛出错误。
另外,只需指出这一点,因为上面的代码中有两次错误:
$this>getContext()->getRouting()->getCurrentRouteName();
...should be:
$this->getContext()->getRouting()->getCurrentRouteName();