MJ *_*han 4 php laravel laravel-routing laravel-5 laravel-5.5
我们可以为多个路由设置一个控制器,并获取参数吗?
目前,我有这些路线:
Route::resource('/customers', 'CustomerController');
Route::resource('/agents', 'AgentController');
Run Code Online (Sandbox Code Playgroud)
并且a CustomerController
和a AgentController
具有所有资源功能.
但随着CustomerController
和AgentController
是除了一个数据库字段,即几乎相同group_id
.我正在考虑使用一个控制器,即PartyController
一条路线:
Route::resource('/parties/customers', 'PartyController ');
Route::resource('/parties/agents', 'PartyController ');
Run Code Online (Sandbox Code Playgroud)
或者如果有人建议:
Route::resource('/parties/{group}', 'PartyController ');
Run Code Online (Sandbox Code Playgroud)
我一直在寻找,但发现很难遵循这条道路.我在构造函数中添加了此代码PartyController
,以检查调用路由:
$path = Request::capture()->path();
$this->group = ucwords(explode("/", $path)[1]);
echo($this->group );
Run Code Online (Sandbox Code Playgroud)
直到这里,一切似乎都很顺利.但在我的时候index.blade.php
,我有这样的说法:
<p>{{ link_to_route('parties.create', 'Add new') }}</p>
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
Route [parties.create] not defined.
Run Code Online (Sandbox Code Playgroud)
我尝试了多种组合,没有任何成功,更多的错误通过,如访问/parties/customers/create
现在不起作用.
那么,无论如何还是可以放弃这个想法吗?
编辑:我的问题不同于多个路线的Same Laravel资源控制器,因为我没有使用特征.
如果我是你,我会用:
Route::resource('/customers', 'CustomerController');
Route::resource('/agents', 'AgentController');
Run Code Online (Sandbox Code Playgroud)
现在您可以进行AgentController
扩展CustomerController
(或任何其他您想要的控制器),以便它们可以重用相同的代码.如果需要,您可以在构造函数中设置一些属性(例如group),以了解您是在处理代理还是客户.
要使您的路由正常工作,您可以将额外的变量从控制器传递到视图,以便在您的刀片中使用:
<p>{{ link_to_route($group.'.create', 'Add new') }}</p>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2303 次 |
最近记录: |