在Laravel中使用路由方法欺骗的优势?

时间:2017-10-09 15:31:50

标签: php laravel laravel-5

刚刚学习Laravel并发现在Laravel的快速入门指南中,他们建议使用“删除”请求,您可以通过执行此操作来欺骗该方法,就好像它是“删除”而不是GET或POST:

<configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-Description>${plantcockpit.os.description}</Bundle-Description> <Import-Package> org.apache.camel.osgi, org.MyProj.ManageSQL.Interface.SqlService, com.fasterxml.jackson.core, com.fasterxml.jackson.databind.*, com.fasterxml.jackson.module.jsonSchema.*, org.apache.commons.net.ftp.*, * </Import-Package> <Export-Package> org.MyProj.SubModuleC </Export-Package> <Private-Package> org.MyProj.SubModuleC.*, org.json, </Private-Package> <Bundle-Type>???</Bundle-Type> </instructions> </configuration>

哪个生成这个html:

{{ method_field('DELETE') }}

在Laravel后端让你使用这样的路由器:

<input type="hidden" name="_method" value="DELETE">

但问题是,为什么我可以将表单的操作设置为'/ task / delete'并在后端使用它:

Route::delete('/task/{task}', function (Task $task) {
    // do something here
});

没有魔法'欺骗'且更加一致,所以有任何理由欺骗?

2 个答案:

答案 0 :(得分:4)

最大的区别是一个是RESTful而另一个不是。 REST使用请求的方法作为动词来描述正在采取的操作类型。对象的URI描述了应该采取操作的资源。 Laravel使用方法欺骗,因为表单元素不能使用除GET和POST之外的方法,而其他客户端如cURL可以。您不必使用REST方法,特别是如果没有其他人将连接到您的后端。

答案 1 :(得分:2)

比较一下:

Route::post('/task/delete/{task}', 'TaskController@destroy');
Route::post('/task/put/{task}', 'TaskController@update');
Route::post('/task/post/{task}', 'TaskController@store');
Route::get('task/get/{task}', 'TaskController@show);

对此:

Route::resource('/task', 'TaskController')

哪一个看起来更清晰,更有条理,更易于维护?