我似乎在这里有一些不一致的行为......我正在处理一些教程,处理显示用户配置文件,然后使用表单模型绑定编辑和更新配置文件。
问题是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
答案 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() !!}