Php Laravel 4-从URL隐藏变量。
我有以下路线:Php Laravel 4-从URL隐藏变量。,php,html,laravel,laravel-4,Php,Html,Laravel,Laravel 4,我有以下路线: Route::resource('projects.deliveries.tasks', 'TaskController'); 当然,如果我想创建任务,我的URL如下所示: http:://test.dev/projects/1/deliveries/3/tasks/create http:://test.dev/projects/delivereis/tasks/create 项目编号1和交付编号3 但是我不希望这个数字出现在URL中,因为任务应该是可以创建的,不需
Route::resource('projects.deliveries.tasks', 'TaskController');
当然,如果我想创建任务,我的URL如下所示:
http:://test.dev/projects/1/deliveries/3/tasks/create
http:://test.dev/projects/delivereis/tasks/create
项目编号1和交付编号3
但是我不希望这个数字出现在URL中,因为任务应该是可以创建的,不需要身份验证或登录
有没有办法隐藏这些数字,这样我就可以得到一个干净的URL,如下所示:
http:://test.dev/projects/1/deliveries/3/tasks/create
http:://test.dev/projects/delivereis/tasks/create
根据我的逻辑,Laravel知道要为项目1和设备3创建任务?如果您想这样做,您可能应该手动指定路由。如果您绝对想按预期使用资源(使用详细的路由),那么使用
Route::resource()
是非常好的,但它并没有为您提供太多的灵活性。事实上,对于大多数项目,实际上建议您手动定义所有路由,以获得最大的控制权(这也是routes.php
文件中很好的自我文档)
为此,我认为您应该创建一个自定义资源。它怎么知道您指的是项目1和交付3?您是否只有(并且永远都有)一个项目和一次交付?我假设将有一个选择这些项目和交付的表单,在这种情况下,
Input
类将用于检索这些变量。如果用户未登录,为什么URI中的数字会阻止用户编辑这些内容?这更像是一个过滤器问题。在资源中,不应该显式调用create方法,这应该由RESTful状态完成,这意味着当对http://test.dev/projects/1/deliveries/3/tasks/执行RESTful POST时,create方法由资源控制器调用。