【发布时间】:2014-04-01 09:13:49
【问题描述】:
在我看来,我不想硬编码一个 url,以防万一我改变它......有没有办法通过说我将使用这个控制器和这个动作来生成超链接 url......类似于:
<a href = 'echo ActionLink("Logout", "Authentication");'>Logout</a>
【问题讨论】:
在我看来,我不想硬编码一个 url,以防万一我改变它......有没有办法通过说我将使用这个控制器和这个动作来生成超链接 url......类似于:
<a href = 'echo ActionLink("Logout", "Authentication");'>Logout</a>
【问题讨论】:
我也发现了这个……
<a href="<?php echo action('AuthenticationController@Logout'); ?>">Logout</a>
【讨论】:
您需要做的是能够以某种方式引用您的路线。有两种主要方法可以做到这一点:命名它们并引用控制器操作(即Controller@action)。
然而,最好和最灵活的方法是命名您的路线。这意味着如果您重构控制器(例如更改类名或命名空间),则必须更改更少的代码(仅更改路由指向的位置,而不是每个视图引用的位置)。
无论您采用哪种方式,您都可以使用各种帮手来获得您想要的东西。以下都是等价的:
{{ link_to_route('route.name', 'Title) }}
{{ HTML::linkRoute('route.name', 'Title') }}
<a href="{{{ route('route.name') }}}">Title</a>
<a href="{{{ URL::route('route.name') }}}">Title</a>
同样,您可以在这些助手中使用 'action' 代替 'route' 以使用 Controller@action 指定路由的方式执行等效版本。
【讨论】: