我需要在用户反馈中提供一个链接(通过setFlash方法)。所以在我的processForm()
函数中,我想使用link_to
,但由于symfony严格的MVC策略,这不起作用。我尝试手动编写<a href='#">somelink</a>
,然后按原样打印。
可以解决这个问题?
答案 0 :(得分:6)
您可以访问控制器中的“路由”。实际上,它有一个快捷方法:
所以在你的行动中:
$url = $this->generateUrl('your_route_name', array(/* parameters */));
对Symfony MVC完全有效:)
要在闪光灯中使用此功能,您可以执行以下操作:
$this->getUser()->setFlash('success_raw', 'Click <a href="'.$url.'">here</a>');
然后在你的视图中渲染:
echo $sf_user->getFlash('success_raw', ESC_RAW);
最后一部分在输出中呈现任何HTML实体,因此始终确保数据是安全的。如果它包含任何用户输入,则应确保对其进行过滤。
答案 1 :(得分:1)
在您的操作中,您可以使用$this->generateUrl()
,其效果与link_to类似。
答案 2 :(得分:0)
这可以通过修改打印flash消息的部分来完成。
例如
你有这段代码:
控制器部分:
// Form save success.
$this->getUser()->setFlash('success', 'This is a ' . link_to('@myRouteName', 'link') . ' for testing.');
在您看来:
<?php
if ($sf_user->hasFlash('success'):
echo $sf_user->getFlash('success');
endif;
?>
如您所见,Flash消息的标识符为success
。这将打印出您为flash变量指定的确切文本。您可以使用getRawValue()
功能打印出链接:
在您看来:
<?php
if ($sf_user->hasFlash('success'):
echo $sf_user->getRawValue()->getFlash('success');
endif;
?>
有关Symfony中输出转义的更多信息,请访问:http://www.symfony-project.org/api/1_4/sfOutputEscaper