#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()]);
});