从超链接调用路由资源操作

时间:2015-08-29 07:22:42

标签: laravel-5.1

调用路由资源时遇到这个常见问题。我需要从我的href链接中调用路径资源中的动作edit()。我的代码如下所示:

路线中,我有:

Route::resource('admin/settings/basic' , 'admin\settings\BasicController');

在我的 index.blade.php 中,我有:

<li><a href="{{ link_to_route('admin/settings/basic.edit') }}">Basic Settings</a></li>

可以在我的href链接link_to_route中调用它?似乎行不通。只有一种方法可行:

  <li><a href="{{ URL::to('admin/settings/basic/{basic}/edit') }}">Basic Settings</a></li> 

但是,当我使用它时,所以url被破坏了:

http://test.dev/admin/settings/basic/%7Bbasic%7D/edit

如何修复此链接:

例如

http://test.dev/admin/settings/basic/edit

1 个答案:

答案 0 :(得分:0)

当您声明这样的路径资源时:

Route::resource('admin/settings/basic' , 'admin\settings\BasicController');

它会创建以下路线: enter image description here 注意编辑URI(最后一行)。因此,使用路径资源编辑方法,您必须传递您的参数,如下所示:

admin/settings/basic/{basic}/edit,其中{basic}接受参数。

因此,遵循路径资源约定,您的编辑链接应生成以下内容:

http://test.dev/admin/settings/basic/1/edit

解决方案[第4号]:

1)在您的route.php中,您可以像这样定义资源路径:

Route::resource('admin/settings/basic' , 'admin\settings\BasicController');

2)所以,你必须在App\Http\Controllers\admin\settings\BasicController.php创建BasicController.php(如果你还没完成)

3)你的edit.blade.php应放在

views/admin/settings/basic/edit.blade.php

4)所以,不要在视图中使用link_to_route。您可以使用如下路线功能:

<li><a href="{{ route('admin.settings.basic.edit', $user->id) }}">Basic Settings</a></li>

请注意,您必须传递id参数($ user-&gt; id)。这将产生以下URI:

http://test.dev/admin/settings/basic/1/edit