Я хотел бы иметь общую домашнюю страницу и другую домашнюю страницу для зарегистрированных пользователей
Я много искал в google, но не могу найти, что положить в оператор if
Я попробовал что-то вроде этого:
Route::get('/', array('as'=>'home', function(){ if (!Auth::check()) { Route::get('/', array('uses'=>'homecontroller@index')); } else{ Route::get('/', array('uses'=>'usercontroller@home')); } }));
Я также пытаюсь что-то вроде:
return Controller::call('homecontroller@index');
но, похоже, это не для laravel 4
Я пробовал много других вещей, поэтому я думаю, что это скорее проблема неправильного понимания
Если у вас есть какая-либо подсказка
Спасибо за вашу помощь
Самое простое решение, о котором я могу думать, это:
<?php $uses = 'HomeController@index'; if( ! Auth::check()) { $uses = 'HomeController@home'; } Route::get('/', array( 'as'=>'home' ,'uses'=> $uses ));
Или вы можете просто направить индекс url / to method () и сделать там Auth :: check ().
хорошо после обсуждений на этой платформе и других форумах, я возвращаюсь с компактным решением
Route::get('/', array('as'=>'home', 'uses'=> (Auth::check()) ? "usercontroller@home" : "homecontroller@index" ));
// routes.php Route::get('/', 'homecontroller@index'); // homecontroller.php class homecontroller extends BaseController { public function index() { if (!Auth:: check()) { return $this->indexForGuestUser(); } else { return $this->indexForLoggedUser(); } } private function indexForLoggedUser() { // do whatever you want } private function indexForGuestUser() { // do whatever you want } }
Вы должны попробовать что-то вроде:
Route::get('/', array('as'=>'home', function(){ if (!Auth::check()) { Redirect::to('home/index')); } else{ Redirect::to('user/index')); } }));
Таким образом, вы в основном перенаправляете пользователя на основе проверки Auth вместо определения дополнительного маршрута.
Или используйте фильтры маршрута
Route::filter('authenticate', function() { if (!Auth::check()) { return Redirect::to('home/index'); } }); Route::get('home', array('before' => 'authenticate', function() { Redirect::to('user/index'); }));