簡體   English   中英

Laravel:路由[登錄]未定義

[英]Laravel: Route [login] not defined

我正在 Laravela 中創建一個應用程序,當我嘗試訪問我的 url 時,例如: http : //example.com它返回這個奇怪的錯誤? 這僅在我不訪問 /login 時發生?

InvalidArgumentException in UrlGenerator.php line 304:
Route [login] not defined.

代碼:

use App\Http\Controllers\Frontend;

Route::group(['domain' => 'localhost', 'namespace' => 'Frontend'], function() {

    Route::group(['middleware' => 'guest', 'namespace' => 'Guest'], function() {
        Route::get('/', function() { return Redirect::to('/login'); });
        Route::get('/login', 'LoginController@getView');
        Route::post('/login', 'LoginController@onPost');
    });

    Route::group(['middleware' => 'auth', 'namespace' => 'User'], function() {
        Route::get('/', function() { return Redirect::to('/home'); });
        Route::get('/home', 'HomeController@getView');
        Route::get('/logout', 'LogoutController@performLogout');
    });
});

Route::group(['domain' => 'admin.localhost'], function() {
    Route::get('/', function() {
        return 'Housekeeping will be making an appearance soon!';
    });
});

這是我的 LoginController:

<?php
namespace App\Http\Controllers\Frontend\Guest;

use Auth;
use App\User;
use App\Http\Controllers\Controller;
use Validator;
use Redirect;
use Illuminate\Http\Request;
use App\Database\Frontend\User\Player;
use App\Database\Frontend\WebsiteLogin;

class LoginController extends Controller
{
    public function getView()
    {
        return view('frontend.login');
    }

    public function onPost(Request $request) 
    {
        $validator = Validator::make($request->all(), [
            'mail'     => 'required|email|exists:users',
            'password'  => 'required'
        ]);

        if ( $validator->fails()) {
            return Redirect::to('/login')->withErrors($validator->messages());
        }
        else {
            if (!Auth::attempt(['mail' => $request->input('mail'), 'password' => $request->input('password')])) {
                $this->addNewWebsiteLogin($request, Player::where('mail', $request->input('mail'))->pluck('id')->first(), "0");
                return Redirect::to('/login')->withMessage('Email and password do not match')->withColor('danger');
            }
            else {
                $this->addNewWebsiteLogin($request, Auth::user()->id, "1");

                $user = Auth::user();
                $user->last_online = time();
                $user->save();

                /*if (config('frontend.government_only') && (Auth::Guest() || Auth::user()->roleplay->government_id == 0)) {
                    Auth::logout();
                    return Redirect::to('/login')->withMessage(config('frontend.site_name') . ' is only open to government individuals at this moment, too bad.')->withColor('danger');
                }*/

                return Redirect::to('/home')->withMessage('Welcome back!');
            }
        }
    }

    private function addNewWebsiteLogin(Request $request, $userId, $status) {
        $websiteLogin                    = new WebsiteLogin;
        $websiteLogin->user_id           = $userId;
        $websiteLogin->request_ip        = $request->ip();
        $websiteLogin->request_system    = 'TODO';
        $websiteLogin->request_browser   = 'TODO';
        $websiteLogin->login_status      = $status;
        $websiteLogin->save();
    }
}

看起來您正在使用route('login')來創建指向登錄頁面或表單的鏈接。

如果您在鏈接中使用它,只需命名get()路由:

Route::get('login', ['as' => 'login', 'uses' => 'LoginController@getView']);

如果您在表單中使用route()助手,請對post()路由執行此操作。

您可以使用 artisan comp php artisan make:auth來搭建所需的身份驗證頁面。

您可以在此處找到相關文檔, https://laravel.com/docs/5.4/authentication

如果你有,登錄路線是這樣的:

Route::post('login', ['middleware' => 'guest', 'uses' => 'UserController@postLogin',]);

只需要添加

->name('login');

在你的路線結束時像這樣。

你的結果是這樣的:

Route::post('login', ['middleware' => 'guest', 'uses' => 'UserController@postLogin',])->name('login');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM