Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Начинаю изучать Laravel и сразу же появилась идея сделать так что бы при GET запросе например /user/boris обрабатывался контролер UserController@getBoris
Route::get('/user/boris', array(
'as' => 'boris',
'uses' => 'UserController@getBoris'
));
Во так это работает но мне нужно что бы название контролера и его действие бралось из запроса
например:
Route::get('{name}/{action}', array(
'uses' => ucfirst($name).'Controller@get'.ucfirst($action),
));
Для новичка очень сложно разобраться, мне это нужно что бы добавить возможность дополнять функциональность, добавляя всего лишь контроллер.
Помогите пожалуйста реализовать эту задумку.
Изменено Yunus (29.05.2017 11:41:09)
Не в сети
Как вариант
App\Providers\RouteServiceProvider
$method = 'index';
if(substr_count($_SERVER['REQUEST_URI'], '/') == 2){
$method = 'paginate';
$current_url = explode("/", $_SERVER['REQUEST_URI'])[1];
}else{
$current_url = str_replace("/", "", $_SERVER['REQUEST_URI']);
}
$page = Page::where('url',$current_url)->first();
if(!is_null($page))
$controller_name = 'PageController';
$product = Product::where('url',$current_url)->first();
if(!is_null($product))
$controller_name = 'ProductController';
if(isset($controller_name)){
$_ENV['controller_name'] = $controller_name;
$_ENV['method_name'] = $method;
}
///////----------------------/////
if(isset($_ENV['controller_name'])){
Route::get('/{url}', ['uses'=>$_ENV['controller_name'].'@'.$_ENV['method_name']]);
Route::get('/{url}/{num}', ['uses'=>$_ENV['controller_name'].'@'.$_ENV['method_name']]);
}
Изменено Alukard19918 (30.05.2017 15:50:45)
Не в сети
Спасибо что откликнулись.
Посоветовали перейти на Yii2 там роуты по умолчанию нацелены на контролеры
Тему можно закрыть
Не в сети
Страницы 1