php - (Laravel) 如何在 1 个路由中使用 2 个 Controller ?

标签 php laravel laravel-4 laravel-routing

如何在 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/

相关文章:

php - CodeIgniter-Inner Join 5个或更多表(SQL)

php - 如何在 pg_query_params 调用中使用 ST_GeomFromText ('Point($1 $2)' , 4326)

php - laravel 原始查询不返回结果

mysql - Laravel `model->update($data)` 将下午时间更改为上午

php - fatal error :未捕获的异常 'Zend_Session_Exception' 带有消息“Zend_Session::start()”

php - 有 MAMP PRO 的免费替代品吗?

laravel - 使用 VueJs 处理 Laravel Excel::download

Laravel ffmpeg 编码失败未转换

php - Laravel 5.5 验证失败时验证更改响应格式

php - Laravel 关系返回 null