Laravel调用,而不是@Destroy

问题描述:

@show我有我的路线的问题Laravel(V 4.2)..Laravel调用,而不是@Destroy

查看:

{{ Form::open(['method' => 'DELETE', 'route' => ['admin.users.destroy', $user->user_id]]) }} 
     <td><button type="submit" style="...">Delete</button></td> 
{{ Form::close() }} 

路线:

Route::resource('admin/users', 'App\Controllers\Admin\UserIndexController'); 

控制器:

public function show() { 
    echo "show"; 
} 

public function destroy() { 
    echo 'destroy'; 
} 

当按钮是c尽管它总是打印出“秀”。为什么是这样?

+0

您的按钮实际上并没有做任何事情。它需要是一个提交按钮,或使用JavaScript来使用它来提交表单。 – aynber

+0

@aynber仍然一样 – toddddos

+0

打开浏览器控制台,并在按下按钮时观看“网络”选项卡。请求使用什么方法? – aynber

编辑答案:

Routes.php 

Route::resource('admin/users', 'UserIndexController'); 

{{ Form::open(['method' => 'DELETE', 'route' => ['admin.users.destroy', $user->user_id]]) }} 
     <td><button type="submit" style="...">Delete</button></td> 
{{ Form::close() }} 

public function show() { 
     echo "show"; 
    } 

    public function destroy() { 
     echo 'destroy'; 
    } 

我正在 “摧毁” 作为输出。

+0

我添加了类型属性,但它仍然打印出“显示” – toddddos

+0

请找到编辑的答案 –

HTML表单无法制作PUT,PATCHDELETE请求,因此您需要使用Laravel进行欺骗。

添加到您的形式...

<input type="hidden" name="_method" value="delete" /> 

我相信,因为表单生成器已经从核心移除,现在正由LaravelCollective管理,这通常是不Laravel的较新版本的问题这将处理自动添加此输入。

https://laravel.com/docs/4.2/html#opening-a-form

+0

这是由laravel自动添加的(当在浏览器中检查元素时),这不是问题然后..从我的网络选项卡浏览器即时通讯仍然得到GET方法,而不是删除 – toddddos

+0

是的,这只会是GET或POST。 Laravel应该阅读隐藏的输入,如果它在那里,并确定它基于什么类型的请求。 – user3158900

+0

是的。但它并不是。 – toddddos