如何在 1 条 route 使用 2 个 Controller ?
这里的目标是创建多个页面,每个页面有 1 个职业(例如:会计师),然后将它们链接到提供会计类(class)的学校。
示例页面包括:
1.会计师职业信息(我这里用的是“职业” Controller )
2. 提供会计类(class)的学校(我在这里使用单独的“学校” Controller )。
Route::get('/accountants-career', 'CareerController@accountants');
Route::get('/accountants-career', 'SchoolsController@kaplan');
使用上面的代码将覆盖 1 个 Controller 。
有解决办法吗?
最佳答案
你不能那样做,因为这不是一件好事,而且 Laravel 不会让你有相同的路由来点击两个不同的 Controller 操作,除非你使用不同的 HTTP 方法(POST,GET .. .). Controller 是一个 HTTP 请求处理程序而不是一个服务类,因此您可能需要稍微更改您的设计,这是一种解决方法:
如果您要在一页中显示所有数据,请创建一个路由器:
Route::get('/career', 'CareerController@index');
创建一个瘦 Controller ,只获取信息并传递给您的 View :
use View;
class CareerController extends Controller {
private $repository;
public function __construct(DataRepository $repository)
{
$this->repository = $repository;
}
public function index(DataRepository $repository)
{
return View::make('career.index')->with('data', $this-repository->getData());
}
}
并创建一个DataRepository类,负责知道在需要那种数据的情况下该做什么:
class DataRepository {
public getData()
{
$data = array();
$data['accountant'] = Accountant::all();
$data['schools'] = School::all();
return $data;
}
}
请注意,此存储库会自动注入(inject)到您的 Controller 中,Laravel 会为您完成。
关于php - (Laravel) 如何在 1 个路由中使用 2 个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26091998/