Параметр GET для спокойного контроллера Laravel 4

Чтобы добавить параметр в метод GET, я знаю, что мне нужно добавить {parameter} в маршрут, как показано ниже.

Route::get('example/search/{id}', 'ExampleController@exampleMethod')

Однако есть ли способ сделать это с помощью контроллера RESTful, как показано ниже?

routes.php

Route::controller('example', 'ExampleController')

ПримерКонтроллер.php

public function getSearch($id){
    //do something with $id
}

Вышеприведенное не работает, потому что routes.php не ожидает параметр для метода getSearch. Интересно, есть ли способ решить эту проблему без добавления отдельных Route::get маршрутов.


person Henry Cho    schedule 03.11.2013    source источник


Ответы (1)


<?php

// ExampleController.php

class ExampleController extends BaseController {
    public function getSearch($id = null){
        if ($id == null) {
            return 'no id';
        }
        return $id;
    }
}

// routes.php

Route::controller('example', 'ExampleController');

?>

php artisan routes:

введите здесь описание изображения

введите здесь описание изображения

person Community    schedule 03.11.2013
comment
Здорово. Но как насчет той же ситуации с методом index в Laravel 4? Даже если вы определите его как public function getIndex($id = null), запрос URL-адреса domain.tld/example/1 вызовет Controller method not found ошибку. Вы должны определить для этого отдельный маршрут, например Route::get('example/{id}', ['uses' => 'ExampleController@getIndex'])->where('id', '[0-9]+');. ПРИМЕЧАНИЕ: это декралирование маршрута должно выполняться ДО того, как ваше объявление Route::controller заработает. - person vitalikaz; 01.04.2014
comment
Индекс @vitalikaz имеет очень специфическое применение. Предполагается, что это страница индекса в вашем приложении. Поэтому, насколько я понимаю, он не должен принимать параметры по дизайну, поэтому то, что вы делаете, переопределяет желаемое поведение по умолчанию. - person AturSams; 15.06.2014