Допустим, у меня есть URL-адрес, как это:Общая логика между различными контроллерами Laravel метод
/city/nyc (display info about new york city)
и другой, как это:
/city/nyc/streets (display a list of Street of nyc)
я могу связать их методом, как это:
Route::get('city/{city}', '[email protected]');
Route::get('city/{city}/streets', '[email protected]');
Проблема в том, что мне нужно выполнить некоторые проверки в городе (например, если {city} присутствует в базе данных) на обоих m ethods. я мог бы создать метод и вызывать их в обоих, как это:
class CityController {
private function cityCommonCheck($city) {
// check
}
public function showCity($city) {
$this->cityCommonCheck($city);
// other logic
}
public function showCityStreet($city) {
$this->cityCommonCheck($city);
// other logic
}
}
Есть ли лучший способ?
Вы можете написать [промежуточное программное обеспечение] (http://laravel.com/docs/5.0/middleware) для него – lukasgeiter
Я не думаю, что промежуточное ПО является лучшим вариантом для этого, я думал g, чтобы поместить проверку внутри конструктора контроллера, но как я могу получить доступ к {city} из конструктора? –
Почему вы так думаете? Вы можете получить доступ к '{city}' с использованием фасада маршрута 'Route :: input ('city')' или путем ввода класса '$ router-> класса' Router' ('city') ' – lukasgeiter