我正在開發一個 Laravel 應用程式,并設定了一個登錄頁面,但我試圖弄清楚為什么我的登錄表單沒有發布。
<form role="form" method="post" action="{{ route('login.perform') }}">
<div class="form-group">
<label class="form-control-label">Email address</label>
@if ($errors->has('username'))
<span class="text-danger text-left">{{ $errors->first('username') }}</span>
@endif
<div class="input-group input-group-merge">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-user"></i></span>
</div>
<input type="email" class="form-control" id="input-email" placeholder="[email protected]">
</div>
</div>
<div class="form-group mb-4">
<div class="d-flex align-items-center justify-content-between">
<div>
<label class="form-control-label">Password</label>
@if ($errors->has('password'))
<span class="text-danger text-left">{{ $errors->first('password') }}</span>
@endif
</div>
<div class="mb-2">
<a href="#!" class="small text-muted text-underline--dashed border-primary">Lost password?</a>
</div>
</div>
<div class="input-group input-group-merge">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-key"></i></span>
</div>
<input type="password" class="form-control" id="input-password" placeholder="Password">
<div class="input-group-append">
<span class="input-group-text">
<a href="#" data-toggle="password-text" data-target="#input-password">
<i class="fas fa-eye"></i>
</a>
</span>
</div>
</div>
</div>
<div class="mt-4">
<button type="button" class="btn btn-sm btn-primary btn-icon rounded-pill">
<span class="btn-inner--text">Sign in</span>
<span class="btn-inner--icon"><i class="fas fa-long-arrow-alt-right"></i></span>
</button>
</div>
</form>
這是處理登錄請求的控制器。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LoginRequest;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
/**
* Display login page.
*
* @return Renderable
*/
public function show()
{
return view('auth.login');
}
/**
* Handle account login request
*
* @param LoginRequest $request
*
* @return \Illuminate\Http\Response
*/
public function login(LoginRequest $request)
{
$credentials = $request->getCredentials();
if(!Auth::validate($credentials)):
return redirect()->to('login')
->withErrors(trans('auth.failed'));
endif;
$user = Auth::getProvider()->retrieveByCredentials($credentials);
Auth::login($user);
return $this->authenticated($request, $user);
}
/**
* Handle response after user authenticated
*
* @param Request $request
* @param Auth $user
*
* @return \Illuminate\Http\Response
*/
protected function authenticated(Request $request, $user)
{
return redirect()->intended();
}
}
這是 web.php 路由。
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\TeacherController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\Auth\RegisterController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group that
| contains the "web" middleware group. Now create something great!
|
*/
Route::group(['namespace' => 'App\Http\Controllers'], function()
{
/**
* Home Routes
*/
Route::get('/', 'HomeController@welcome')->name('welcome');
Route::group(['middleware' => ['guest']], function() {
/**
* Register Routes
*/
Route::get('/register', 'RegisterController@show')->name('register.show');
Route::post('/register', 'RegisterController@register')->name('register.perform');
/**
* Login Routes
*/
Route::get('/login', 'LoginController@show')->name('login.show');
Route::post('/login', 'LoginController@login')->name('login.perform');
});
Route::group(['middleware' => ['auth']], function() {
/**
* Logout Routes
*/
Route::get('/logout', 'LogoutController@perform')->name('logout.perform');
});
});
資料庫已設定、遷移并出現在 phpMyAdmin 中,據我了解,路由控制器和請求均已正確設定。
任何幫助表示贊賞,歡呼。
uj5u.com熱心網友回復:
表單無法提交的原因是您沒有提交按鈕,添加type="submit"到<button>將解決問題:
<button type="submit" class="btn btn-sm btn-primary btn-icon rounded-pill">
我閱讀了評論,您說表單已加載但未發送任何資料。請展示您如何在控制器中獲取資料以及路線,這將有助于其他人找出問題。
uj5u.com熱心網友回復:
您的表單中缺少 csrf
嘗試這個
<form role="form" method="post" action="{{ route('login.perform') }}">
@csrf
...
uj5u.com熱心網友回復:
表單無法提交的原因是您沒有提交按鈕,將 type="submit" 添加到將解決問題:
<button type="submit" class="btn btn-sm btn-primary btn-icon rounded-pill">
并且您的表單中缺少 csrf
嘗試這個
<form role="form" method="post" action="{{ route('login.perform') }}">
@csrf
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/487862.html
