Trying to play with Laravel today for the first time. I am getting the following error when I attempt to visit localhost/project/public:
InvalidArgumentException
Route [login] not defined.
app/routes.php:
<?php Route::get('/', 'HomeController@redirect'); Route::get('login', 'LoginController@show'); Route::post('login', 'LoginController@do'); Route::get('dashboard', 'DashboardController@show');
app/controllers/HomeController.php:
<?php class HomeController extends Controller { public function redirect() { if (Auth::check()) return Redirect::route('dashboard'); return Redirect::route('login'); } }
app/controllers/LoginContoller.php:
<?php class LoginController extends Controller { public function show() { if (Auth::check()) return Redirect::route('dashboard'); return View::make('login'); } public function do() { // do login } }
app/controllers/DashboardController.php:
<?php class DashboardController extends Controller { public function show() { if (Auth::guest()) return Redirect::route('login'); return View::make('dashboard'); } }
Why am I getting this error?
Auth::routes() is just a helper class that helps you generate all the routes required for user authentication. You can browse the code here https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php instead.
Authentication is the process of identifying the user credentials. In web applications, authentication is managed by sessions which take the input parameters such as email or username and password, for user identification. If these parameters match, the user is said to be authenticated.
You're trying to redirect to a named route whose name is login
, but you have no routes with that name:
Route::post('login', [ 'as' => 'login', 'uses' => 'LoginController@do']);
The 'as'
portion of the second parameter defines the name of the route. The first string parameter defines its route.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With