【问题标题】:Is there any way to use one route with two controller in Laravel?有没有办法在 Laravel 中使用一个带有两个控制器的路由?
【发布时间】:2020-01-03 00:40:35
【问题描述】:

我想要一个带有两个控制器路由。但是,我无法实现它。我有 ExpenseControllerIncomeController,我的 路线 看起来像这样:

Route::get('/api/expense/', 'ExpenseController@index');
Route::post('/api/expense', 'ExpenseController@create');

我想用IncomeController添加相同的路由

Route::get('/api/expense', 'IncomeController@index');
Route::post('/api/expense', 'IncomeController@create');

【问题讨论】:

  • 没有。一个路由,一个控制器,因为它怎么知道它会去哪一个?您可能可以创建一种中间控制器来根据提交的内容重新路由它。
  • @anyber 你能给我举个例子吗?
  • HTTP 方法没有提供所需的上下文?认为@aynber 的建议是有道理的。 $controller->callAction()... FWIW:laravel.io/forum/05-29-2015-one-route-to-many-controllers
  • 请提供详细信息,说明您为什么认为一条路线需要多个控制器。你几乎肯定需要做一些不同的事情,因为这不是控制器的使用方式。

标签: php laravel


【解决方案1】:

不,不能直接将一个路由链接到两个控制器。

但是,在评论部分确定,实际上并不需要一个路由链接多个控制器,而是一个控制器控制多个模型。

您可以创建一个控制器BudgetController 来控制收入和支出。这是在同一页面上显示两者列表的示例:

routes/web.php

Route::resource('budget', 'BudgetController');

app/Http/Controllers/BudgetController.php

public function index() 
{
    return view('budget.index', [
        'incomes' => Income::all(),
        'expenses' => Expense::all(),
    ])
}

资源/视图/预算/index.php

<table>
    @foreach($incomes as $income)
        <tr><td>{{ $income->amount }}</td></tr>
    @endforeach
</table>

<table>
    @foreach($expenses as $expense)
        <tr><td>{{ $expense->amount }}</td></tr>
    @endforeach
</table>

【讨论】:

  • 查看您的其他问题,我意识到您可能正在使用 Vue,因此我的回答毫无用处。它是否正确?如果是这样,我将删除此答案。
猜你喜欢
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
相关资源
最近更新 更多