Laravel: как сделать роуты как в Kohana?

В Кохане есть такой дефолтный роут:
Route::set('default', '(<controller>(/<action>(/<id>)))')
	->defaults(array(
		'controller' => 'welcome',
		'action'     => 'index',
	));

Есть контроллер/метод по умолчанию, параметры в скобках (<controller>(/<action>(/<id>))) необязательные, выполняются если таковые существуют и они есть в url.

для адреса example.com - контроллер welcome, метод index
для example.com/question - контроллер question, метод index
для example.com/question/new - контроллер question, метод new

Как сделать подобное в Laravel 4?
  • Вопрос задан
  • 3125 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
никак. насколько я помню symfony/routing этого не позволяет, и это хорошо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AmdY
@AmdY
PHP и прочие вебштучки
Пропиши последним роутом что-то вроде
Route::any('{controller}/{action?}', function($controller, $action = 'index') {
    return call_user_func_array([App::make(ucwords($controller). 'Controller'), $action], array_slice(func_get_args(), 2));
});
Ответ написан
mergenich
@mergenich Автор вопроса
Нашел вполне удобный для меня способ.
В роутах пишем имя контроллера.
Route::controller('question', QuestionController');

Имена методов начинаем с get и post
class QuestionController extends BaseController {
    public function getIndex() {    // example.com/question
        //
    }
    //  для POST запроса на адрес example.com/question/new
    public function postNew() {    
        //
    }
    public function getItem($id) {    // example.com/question/item/1
        //
    }


RESTful Controllers
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы