Маршрутизация Laravel в действия контроллера

#php #laravel #laravel-routing

#php #laravel #laravel-маршрутизация

Вопрос:

Я уже некоторое время пытаюсь заставить laravel перенаправлять к моим действиям контроллера. Я не уверен в лучшем способе сделать это в среде laravel.

Как я представляю это в своей голове, это так.

У меня есть настройка маршрута для привязки к действиям моих контроллеров. итак, когда я набираю domain.com/Home/Profile Это вызовет действие профиля HomeController. который выполнит некоторую обработку и отобразит представление на странице. (как mvc4)

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

Пока что это мой код: routes.php

 Route::get('/', 'HomeController@index');

Route::any('/{controller}/{action?}', function ($controller, $action = 'index') 
{
    $class = $controller.'Controller';
    $controller = new $class()

    return $controller->{$action}();

});
  

HomeController:

 class HomeController extends BaseController 
{
    protected $layout = 'layouts.master';


    public function index()
    {
        $this->layout->content = View::make('index');
        return View::make('index');
    }

    public function profile()
    {
        $this->layout->content = View::make('profile');
    }
} 
  

Заранее спасибо за любую помощь.

Ответ №1:

Нашел ответ, который сработал для меня. Это контроллеры Restful

Я зарегистрировал контроллер с помощью этой строки

 Route::get('/', 'HomeController@index');
Route::controller('/', 'HomeController');
  

И изменил мои действия контроллера на getProfile ()

Комментарии:

1. есть ли у меня параметры? Как вызвать действие с параметром? Пример: Route::get('/home/{id}', 'HomeController@index');

Ответ №2:

http://laravel.com/docs/controllers#resource-controllers

 Route::get('home/profile');
Route::resource('home', 'HomeController');
  

Комментарии:

1. может ли быть так, что мои действия ничего не возвращают

Ответ №3:

этот код сработал для меня

 $api->any('order_manage/{action?}', function ($action = 'index'){
        $app = app();
        $namespace = 'AppHttpControllers';
        $controller = $app->make($namespace.'ProjectOrderController');
        return $controller->callAction($action,[request()]);
    });