如何在Laravel中使用动态控制器

时间:2016-08-11 18:49:15

标签: laravel laravel-5.2 laravel-routing

我试图调用动态弹出视图,我需要通过控制器传递数据,我希望控制器是动态的,它将访问特定的功能并相应地制作视图。基本上我正在寻找这样的东西:

Route::post('/popup/{id}', 'PopupController@{$id}');

所以基本上假设它被称为mydomain.com/popup/id1,它应该调用PopupController@id1

帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

我建议不要在控制器操作中编写动态路由或控制器使用switch case。

e.g。

Route::post('/popup/{id}', 'PopupController@action');

在控制器

public function action($id)
{
  switch($id)
  {
     case 1: ...

     case 2: ...
  }
}

答案 1 :(得分:2)

您需要一个可以触发相应功能的方法

Route::post('/popup/{id}', 'PopupController@dispatch');

在PopupController中

public function dispatch($id)
{
    return $this->$id()
}

然后,如果您的$idsomeFunction,则需要确保您的控制器具有function someFunction()方法