所以我开始使用Laravel,我发现它非常简单,现在我正在创建自己的休息服务。我的问题是我不知道我是否正在进行href链接,但是它确实有效。这是代码:
<a href="{{URL::to('accounts/create')}}">Add user</a>
在我的控制器中,我只渲染刀片:
public function create()
{
return view('accounts.create');
}
因此,如果我点击添加用户链接,它会将我重定向到localhost:8080/accounts/create
,效果很好。我的问题是,有更好的方法吗?就像我在路线文件中改变任何一样,我不会再改变href链接了吗?
答案 0 :(得分:5)
理想情况下,您将在路线文件中命名路线。 像,
<a href="{{URL::route('createAccount')}}">Add user</a>
您将按如下方式使用
aa
bb
cc
在你看来。
这样,即使您更改了网址(帐户/创建)或操作名称(创建),也不必在视图中更改它。允许您的观点独立。
答案 1 :(得分:2)
您可以做的是使用路线第二个参数中数组中的as
键为您的路线命名:
Route::get('accounts/create', [
'as' => 'accounts.create',
'uses' => 'AccountController@create'
]);
然后您可以通过它的名称在您的应用程序中引用此路由,即使您碰巧更改了URL,它也会转到相同的位置。对于锚标记,您可以执行以下操作:
{{ URL::route('accounts.create') }}
如果您正在使用资源控制器,则会有预定义路由,您可以在资源控制器处理的操作下查看:http://laravel.com/docs/5.1/controllers#restful-resource-controllers
通过运行php artisan route:list
答案 2 :(得分:1)
示例:
Route::get('accounts/create', array('as' => 'signup', 'uses' => 'UserController@create'));
<a href="{{URL::route('signup')}}">Add user</a>
此路线被命名为“注册”,您可以随时更改网址:
Route::get('accounts/signup', array('as' => 'signup', 'uses' => 'UserController@create'));
答案 3 :(得分:1)
是的,您可以使用action()帮助程序调用控制器内的方法,并根据需要自动生成路径。
所以让我们考虑你有一个名为FrontendController.php的控制器和一个名为showFrontend($ section)的方法,并假设你有一个匹配这个控制器和方法的路由(假设你说“frontend / show / {$ section}” ,你可以打电话:
action('FrontendController@showFrontend', array( 'index' ) )
那将返回:
frontend/show/index
所以基本上它会查找与该方法/控制器关联的路由。您可以将其与其他帮助程序结合使用以创建整个URL。
注意:如果您有不同的控制器文件夹,嵌套资源等,请考虑名称空间。
我希望它有所帮助!