xen*_*ish 21 php laravel laravel-5
我有一个链接
<a class="trashButton" href="{{ URL::route('user.destroy',$members['id'][$i]) }}" style="cursor: pointer;"><i class="fa fa-trash-o"></i></a>
Run Code Online (Sandbox Code Playgroud)
这个链接应该直接指向Usercontroller的destroy方法,这是我的路由 Route::resource('/user', 'BackEnd\UsersController');
UserController是一个资源控制器.但此时它指示我使用show方法而不是指向destroy方法
Bro*_*ary 32
您需要发送DELETE
请求而不是GET
请求.你不能用链接做到这一点,所以你必须使用AJAX请求或表单.
这是通用表单方法:
<form action="{{ URL::route('user.destroy', $members['id'][$i]) }}" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button>Delete User</button>
</form>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Laravel 5.1或更高版本,则可以使用Laravel的内置帮助程序来缩短代码:
<form action="{{ route('user.destroy', $members['id'][$i]) }}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button>Delete User</button>
</form>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Laravel 5.6或更高版本,则可以使用新的Blade指令进一步缩短代码:
<form action="{{ route('user.destroy', $members['id'][$i]) }}" method="POST">
@method('DELETE')
@csrf
<button>Delete User</button>
</form>
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关Laravel中方法欺骗的更多信息.
man*_*nix 17
这是因为您通过GET方法而不是DELETE方法请求资源.看:
DELETE /photo/{photo} destroy photo.destroy
GET /photo/{photo} show photo.show
Run Code Online (Sandbox Code Playgroud)
两个路由都具有相同的URL,但标题动词标识要调用的路由.看起来REST风格的表.例如,通过ajax,您可以发送DELETE请求:
$.ajax({
url: '/user/4',
type: 'DELETE', // user.destroy
success: function(result) {
// Do something with the result
}
});
Run Code Online (Sandbox Code Playgroud)
Dam*_*bat 13
我使用这个模板'resources/views/utils/delete.blade.php'
<form action="{{ $url or Request::url() }}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button type='submit' class="{{ $class or 'btn btn-danger' }}" value="{{ $value or 'delete' }}">{!! $text or 'delete' !!}</button>
</form>
Run Code Online (Sandbox Code Playgroud)
被称为:
@include('utils.delete',array( 'url' => URL::route('user.destroy',$id),'text' => '<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> delete me'))
Run Code Online (Sandbox Code Playgroud)
Den*_*nny 10
如果您希望通过常规链接而不是通过AJAX或其他类型的表单请求来执行此操作,则可以设置一个响应正常GET
请求的特殊路由:
在您的路由中,除资源外还要定义:
Route::get('user/{site}/delete', ['as' => 'user.delete', 'uses' => 'UserController@destroy']);
Run Code Online (Sandbox Code Playgroud)
在你看来:
<a href="{{ route('user.delete', $user->id) }}">Delete this user</a>
Run Code Online (Sandbox Code Playgroud)
在你的控制器中:
public function destroy(User $user)
{
$user->delete();
return redirect()->route('users.index');
}
Run Code Online (Sandbox Code Playgroud)
如果我们需要使用anchor来触发destroy路由,又不想使用ajax,可以在我们的链接里面放一个表单,使用onclick
属性提交表单:
<a href="javascript:void(0);" onclick="$(this).find('form').submit();" >
<form action="{{ url('/resource/to/delete') }}" method="post">
<input type="hidden" name="_method" value="DELETE">
</form>
</a>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47647 次 |
最近记录: |