为什么是 {!! Html :: linkRoute .... !!}有选择性吗? (laravel 5.2)

时间:2016-07-20 08:49:31

标签: php laravel-5.2 laravel-routing

我似乎在这里有一些不一致的行为......我正在处理一些教程,处理显示用户配置文件,然后使用表单模型绑定编辑和更新配置文件。

问题是Html助手似乎没有在按钮后面生成正确的链接。当我将鼠标悬停在按钮上时,我会得到一些不同的东西:

例如,在我的编辑刀片上,SAVE按钮应该指向更新路径。将鼠标悬停在按钮上会显示为http://localhost/dev.rentid.co.nz/public/user/2当我期待http://localhost/dev.rentid.co.nz/public/user/2/update

Html::linkRoute是否需要一些额外的参数?

我的展示刀片

  {!! Html::linkRoute('user.edit', 'Edit', array($thisUser->id), array('class' => 'btn btn-primary btn-block')) !!}
  {!! Html::linkRoute('user.destroy', 'Delete', array($thisUser->id), array('class' => 'btn btn-danger btn-block')) !!}

我的编辑刀片

{!! Form::model($thisUser, ['route' => ['user.update', $thisUser->id], 'method' => 'PUT']) !!}
...
{!! Html::linkRoute('user.show', 'Cancel', array($thisUser->id), array('class' => 'btn btn-danger btn-block')) !!}
{!! Html::linkRoute('user.update', 'Save', array($thisUser->id), array('class' => 'btn btn-success btn-block')) !!}
...
{{  Form::close() }}

我的routes.php

...
Route::resource('/user', 'UserController');
....

产生了这个:

 GET|HEAD  | user                    | user.index   | rentid\Http\Controllers\UserController@index
 POST      | user                    | user.store   | rentid\Http\Controllers\UserController@store
 GET|HEAD  | user/create             | user.create  | rentid\Http\Controllers\UserController@create
 DELETE    | user/{user}             | user.destroy | rentid\Http\Controllers\UserController@destroy
 PUT|PATCH | user/{user}             | user.update  | rentid\Http\Controllers\UserController@update
 GET|HEAD  | user/{user}             | user.show    | rentid\Http\Controllers\UserController@show
 GET|HEAD  | user/{user}/edit        | user.edit    | rentid\Http\Controllers\UserController@edit

1 个答案:

答案 0 :(得分:2)

资源路由使用REST,这意味着控制器将根据请求的类型处理请求的URL。

与您在路线列表中显示的一样,带有 DELETE 请求的 user / {user} 路由将由destroy方法处理,路由带有 PUT PATCH 请求的 user / {user} 将由更新方法处理,因此您的网址http://localhost/dev.rentid.co.nz/public/user/2是正确的。您的更新表单没问题,但是对于删除,您还必须使用表单来发出请求。

{!! Form::open(['method' => 'DELETE', 'route' => ['user.destroy', $thisUser->id]]) !!}
<button type="submit">Delete</button>
{!! Form::close() !!}