laravel如何在同一页面登录和注册?

问题描述 投票:0回答:1

所以我是 Laravel 的新手,我只做过一个项目,其中注册有一个 .blade 文件,登录有另一个 .blade 文件。

现在我正在开发一个项目,其中只有一个 .blade 文件,该文件有 2 个表单,一个普通的用户名密码表单(登录)和一些 js,当我单击按钮时,会出现注册表单,所以我遇到了困难使数据出现在我的数据库上的时间以及路由和其他内容,因为没有 /login 和 /registration 路由导致它只有 1 页。

我并没有真正尝试太多,因为我不太了解,但我让登录和注册功能返回相同的视图,即login.blade文件,并且我提供了注册和注册功能/注册路由以及登录和loginPost功能/登录路由,但现在注册表不响应插入的数据甚至不执行任何操作不刷新不清除输入的数据什么也不做。

.刀片代码

    <form action="{{ route('register_post') }}" method="POST" id="form" class="sign-up-form">
            @csrf
          <h2 class="title">Sign Up</h2>
          <div class="input-field">
            <i class="fas fa-user"></i>
            <input id="username" type="text" name="username" placeholder="Username" />
            <div class="error"></div>
          </div>
          <div class="input-field">
            <i class="fas fa-envelope"></i>
            <input id="email" type="email" name="email" placeholder="Email" />
            <div class="error"></div>
          </div>
          <div class="input-field">
            <i class="fas fa-lock"></i>
            <input id="password" type="password" name="password" placeholder="Password" />
            <div class="error"></div>
          </div>
          <div class="input-field">
            <i class="fas fa-lock"></i>
            <input id="confirmPassword" type="password" name="confirmPassword" placeholder="confirm Password" />
            <div class="error"></div>
          </div>
          <input type="submit" value="Sign Up" class="btn solid 
        </form>

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;

Route::get('/login', [AuthController::Class,'login'])->name('login');
Route::get('/register', [AuthController::Class,'register'])->name('register');
Route::post('/login', [AuthController::Class,'loginPost'])->name('login_post');
Route::post('/register', [AuthController::Class,'registrationPost'])->name('register_post');
Route::get('/logout', [AuthController::Class,'logout'])->name('logout');

验证控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;

class AuthController extends Controller
{
    function login(){
        return view('login');
    }
    function register(){
        return view('login');
    }
    function loginPost(Request $request){
$request->validate([
    'username' => 'required',   
    'password' => 'required']);

    $credentials = $request->only('username','password');
    if (Auth::attempt($credentials)){
return redirect()->intended(route('home'));
    }  
return redirect(route('login'))->with('error','Failed to login');
}

function registrationPost(request $request){
    $request->validate([
        'username' => 'required',   
        'confirmPassword' => 'required',   
        'email' => 'required|email|unique:users',   
        'password' => 'required']);

$data['username'] = $request -> username;
$data['email'] = $request -> email;
$data['password'] = Hash::make($request -> password);
$data['confirmPassword'] = $request -> confirmPassword;
$user = User::create($data);    
if(!$user){
    return redirect(route('register_post'))->with('error','Failed to Register');
}
return redirect(route('login'))->with('success','Youve been registered successfully');

function logout(){
    Session::flush();
    Auth::logout();
    return redirect(route('login'));
};
}

}

抱歉,如果太多了

php laravel
1个回答
0
投票

您可以根据当前端点动态设置表单提交路由。这是一个例子:

 <form action="{{ request()->is('register') ? route('register_post') : route('login_post') }}" method="POST" id="form" class="sign-up-form">
© www.soinside.com 2019 - 2024. All rights reserved.