Laravel получает параметр в конструкторе класса [дубликат]

StackOverflow https://stackoverflow.com//questions/24000823

  •  20-12-2019
  •  | 
  •  

Вопрос

Вот мой маршрут:

Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));

Как я могу получить аргумент $companyId в __constructor, чтобы не получать его отдельно во всех моих действиях?

Это было полезно?

Решение

Если вы хотите получить параметры в __construct вашего контроллера, вы можете сделать это:

class HomeController extends \BaseController
{
    public function __construct()
    {
        $this->routeParamters = Route::current()->parameters();
    }
}

он вернет список ключевых значений параметров для маршрута (например: ['companyId' => '1']) @see \Illuminate outing oute

Вы также можете получить конкретный параметр, используя ПолучитьПараметр() или параметр() методы.

ПРИМЕЧАНИЕ: Хотя я не уверен, что это такая уж хорошая идея.Возможно, существует более элегантный способ решения или лучший подход к вашей проблеме.

Другие советы

Если вы хотите упростить процесс, привязка модели маршрута кажется самым простым способом.Вместо того, чтобы выбирать правильный экземпляр модели при каждом действии вашего контроллера, вы передаете правильную модель своему контроллеру во время процесса маршрутизации.

Но вам нужно использовать Route::resource.В маршрутах.php:

Route::bind('company', 'Company');
Route::resource('company', 'HomeController');

Затем у вас есть экземпляр категории, переданный вашему контроллеру.Например, для /company/1:

public function show($company)
{
    // Here you can use, for instance, $company->name
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top