У меня есть следующие маршруты:
// For user
Route::controller('/', 'LoginController');
//For admin
Route::group(array('prefix' => 'admin'), function() {
Route::get('/', 'admin\LoginController@index');
Route::get('/dashboard', 'admin\LoginController@show');
Route::get('/Logout','admin\LoginController@logout');
Route::resource('/setting','admin\SettingController');
});
У меня есть панель пользователя без префикса. В logincontroller содержатся коды авторизации. Я нашел "Метод контроллера не найден". ошибка, когда я открываю admin.but, когда я комментирую маршрут пользователя, тогда администратор работает нормально, но пользовательская панель обнаружила ту же ошибку. help help sir..thanks
Да Здесь LoginController пользователя
<?php
class LoginController extends BaseController {
public function getIndex()
{
if(Auth::check())
{
return Redirect::to('/user/home');
}
return View::make('login.index');
}
public function postIndex()
{
$username = Input::get('username');
$password = Input::get('password');
if (Auth::attempt(['username' => $username, 'password' => $password]))
{
return Redirect::intended('/user/home');
}
return Redirect::back()
->withInput()
->withErrors('Sorry,Username or password is incorrect');
}
public function getLogin()
{
return Redirect::to('/');
}
public function getLogout()
{
Auth::logout();
return Redirect::to('/');
}
}
Контроллер входа администратора
<?php
namespace admin;
class LoginController extends \BaseController {
public function showLogin() {
return \View::make('admin.login');
}
public function index()
{
return \View::make('admin.index');
}
public function store()
{
$username = \Input::get('username');
$password = md5(\Input::get('password'));
if ($mm=\DB::select('select * from admin where uname = ? and password = ?', array($username, $password)))
{
\Session::put('admin', $mm);
return \Redirect::intended('/admin/dashboard');
}
else
{
\Session::flush('admin');
return \Redirect::back()
->withInput()
->withErrors('Sorry,Unauthorized admin please try again');
}
}
public function postIndex()
{
echo 'Demo of post index';exit;
}
public function show()
{
$tt=\Session::get('admin');
return \View::make('admin.dashboard');
}
public function Logout()
{
\Session::flush('admin');
return \Redirect::to('/admin');
}
}
Проблема в том, что Route::controller('/')
захватывает все запросы, у которых есть только один сегмент. это означает /admin
. Затем он пытается найти метод getAdmin()
в пользовательском LoginController
который, очевидно, не существует.
У вас в основном есть два варианта.
Поиск маршрутов выполняется в порядке их регистрации. Если вы разместите admin
группу до другого маршрута, все будет работать так, как ожидалось:
Route::group(array('prefix' => 'admin'), function() {
Route::get('/', 'admin\LoginController@index');
Route::get('/dashboard', 'admin\LoginController@show');
Route::get('/Logout','admin\LoginController@logout');
Route::resource('/setting','admin\SettingController');
});
Route::controller('/', 'LoginController');
Вместо использования Route::controller('/')
вы можете указать каждый маршрут:
Route::get('/', 'LoginController@getIndex');
Route::get('login', 'LoginController@getLogin');
// etc...
Route::group(array('prefix' => 'admin'), function() {
Route::get('/', 'admin\LoginController@index');
Route::get('/dashboard', 'admin\LoginController@show');
Route::get('/Logout','admin\LoginController@logout');
Route::resource('/setting','admin\SettingController');
});
LoginController
?