php - 请我想在 Laravel 8 中使用不同的表实现多个注册和登录,所有用户表单都在同一页面中(切换按钮)
问题描述
这是 3 个用户(买方、卖方、投资者)的 Register Blade 的 Register Blade 图像 - 使用切换按钮
我想让每个表单指向不同的控制器。每个控制器都专注于一个单独的模型——买方、卖方或投资者。而且我不知道该怎么做,我需要控制器和路由方面的帮助
@extends('layouts.app_register')
@section('content')
<div class="banner" style="background-image: linear-gradient(rgba(0,0,0,0.4),rgba(0,0,0,0.4)), url('/img/carrot.jpg') ;">
<div id="logo"><a href="{{url('/')}}"><img src="{{ asset('img/logo.jpg') }}"></a>
</div>
<div class="form-box">
<div class="button-box">
<div id="btn"></div>
<button type="button" class="toggle-btn" onclick="buyer()" >Buyer</button>
<button type="button" class="toggle-btn" onclick="seller()">Seller</button>
<button type="button" class="toggle-btn" onclick="investor()">Investor</button>
</div>
<div class="card black-content">
<div class="card-body">
<form id="buyer" class="input-group" method="POST" action="/buyer" enctype="multipart/form-data">
@csrf
<div class="row">
<div>
<input type="text" class="name" name="username" placeholder="Username" required>
</div>
<div class="col">
<input type="text" class="name" name="firstname" placeholder="Firstname" required>
</div>
<input type="text" class="name" name="middlename" placeholder="Middlename" required>
<input type="text" class="name" name="surname" placeholder="Surname" required>
<input type="text" class="name" name="phone_no" placeholder="+234" required>
<input type="E-MAIL" class="name" name="email" placeholder="E-mail" required>
<input type="password" class="name" name="password" placeholder="Enter password" required>
<input type="text" class="name" name="address" placeholder="Address" required>
<input type="checkbox" class="checkbox"><span>I agree to the terms & conditions</span>
<button type="submit" name="" class="submit-btn">Register</button>
</div>
</form>
</div>
<div class="">
<form id="seller" class="input-group" method="POST" action="{{ route('seller') }}">
@csrf
<div>
<input type="text" class="name" name="username" placeholder="Username" required>
</div>
<input type="text" class="name" name="firstname" placeholder="Firstname" required>
<input type="text" class="name" name="middlename" placeholder="Middlename" required>
<input type="text" class="name" name="surname" placeholder="Surname" required>
<input type="text" class="name" name="phone_no" placeholder="+234" required>
<input type="E-MAIL" class="name" name="email" placeholder="E-mail" required>
<input type="password" class="name" name="password" placeholder="Enter password" required>
<input type="text" class="name" name="address" placeholder="Address" required>
<input type="checkbox" class="checkbox"><span>I agree to the terms & conditions</span>
<button type="submit" class="submit-btn">Register</button>
</form>
</div>
<div class="">
<form id="investor" class="input-group" method="POST" action="" >
@csrf
<div>
<input type="text" class="name" name="username" placeholder="Username" required>
</div>
<input type="text" class="name" name="firstname" placeholder="Firstname" required>
<input type="text" class="name" name="middlename" placeholder="Middlename" required>
<input type="text" class="name" name="surname" placeholder="Surname" required>
<input type="text" class="name" name="phone_no" placeholder="+234" required>
<input type="E-MAIL" class="name" name="email" placeholder="E-mail" required>
<input type="password" class="name" name="password" placeholder="Enter password" required>
<input type="text" class="name" name="address" placeholder="Address" required>
<input type="checkbox" class="checkbox"><span>I agree to the terms & conditions</span>
<button type="submit" class="submit-btn">Register</button>
</form>
</div>
</div>
</div>
</div>
<script>
var x = document.getElementById("buyer")
var y = document.getElementById("seller")
var a = document.getElementById("investor")
var z = document.getElementById("btn")
function buyer(){
x.style.left = "50px";
y.style.left = "450px";
a.style.left = "-400px";
z.style.left = "0px";
}
function seller(){
x.style.left = "-400px";
y.style.left = "50px";
a.style.left = "-400px";
z.style.left = "110px";
}
function investor(){
x.style.left = "-450px";
y.style.left = "450px";
a.style.left = "50px";
z.style.left = "200px";
}
</script>
@endsection
@extends('layouts.app_login')
@section('content')
<div class="banner">
<div id="logo"><a href="{{url('/')}}"><img src="{{ asset('img/logo.jpg') }}"></a>
</div>
<div class="form-box">
<div id="card-title">
<h2>LOGIN</h2>
<div class="underline-title"></div>
</div>
<div class="button-box">
<div id="btn"></div>
<button type="button" class="toggle-btn" onclick="buyer()" >Buyer</button>
<button type="button" class="toggle-btn" onclick="seller()">Seller</button>
<button type="button" class="toggle-btn" onclick="investor()">Investor</button>
</div>
<div class="form-div">
<form id="buyer" class="input-group">
<input type="E-MAIL" class="name" placeholder="E-mail" required>
<input type="password" class="name" placeholder="Enter password" required><br>
<a href="#">
<legend id="forgot-pass">Forgot password?</legend>
</a>
<input id="submit-btn" type="submit" name="submit" value="LOGIN" /><br><br>
<a href="#" id="signup">Don't have account yet?</a>
</form>
</div>
<div class="form-div">
<form id="seller" class="input-group">
<input type="E-MAIL" class="name" placeholder="E-mail" required>
<input type="password" class="name" placeholder="Enter password" required><br>
<a href="#">
<legend id="forgot-pass">Forgot password?</legend>
</a>
<input id="submit-btn" type="submit" name="submit" value="LOGIN" /><br><br>
<a href="#" id="signup">Don't have account yet?</a>
</form>
</div>
<div class="form-div">
<form id="investor" class="input-group">
<input type="E-MAIL" class="name" placeholder="E-mail" required>
<input type="password" class="name" placeholder="Enter password" required><br>
<a href="#">
<legend id="forgot-pass">Forgot password?</legend>
</a>
<input id="submit-btn" type="submit" name="submit" value="LOGIN" /><br><br>
<a href="#" id="signup">Don't have account yet?</a>
</form>
</div>
</div>
</div>
<script>
var x = document.getElementById("buyer")
var y = document.getElementById("seller")
var a = document.getElementById("investor")
var z = document.getElementById("btn")
function buyer(){
x.style.left = "50px";
y.style.left = "450px";
a.style.left = "-400px";
z.style.left = "0px";
}
function seller(){
x.style.left = "-400px";
y.style.left = "50px";
a.style.left = "-400px";
z.style.left = "110px";
}
function investor(){
x.style.left = "-450px";
y.style.left = "450px";
a.style.left = "50px";
z.style.left = "200px";
}
</script>
@endsection
每个用户的模型样本 - 我使用买方模型,因为其他模型相同
<?php
namespace App;
// use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Buyer extends Authenticatable
{
use Notifiable;
protected $guard = 'buyer';
// protected $fillable = [
// 'name', 'email', 'password',
// ];
protected $hidden = [
'password',
];
}
Auth.php 包含“守卫”和提供者
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'buyer' => [
'driver' => 'session',
'provider' => 'buyers',
],
'seller' => [
'driver' => 'session',
'provider' => 'sellers',
],
'investor' => [
'driver' => 'session',
'provider' => 'investors',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'buyers' => [
'driver' => 'eloquent',
'model' => App\Buyer::class,
],
'sellers' => [
'driver' => 'eloquent',
'model' => App\Seller::class,
],
'investors' => [
'driver' => 'eloquent',
'model' => App\Investor::class,
],
],
Kernel.php - 我为每个用户注册中间件的地方
'buyer' => \App\Http\Middleware\AuthenticateBuyer::class,
'seller' => \App\Http\Middleware\AuthenticateSeller::class,
'investor' => \App\Http\Middleware\AuthenticateInvestor::class,
BuyerController.php -与其他用户控制器相同
<?php
namespace App\Http\Controllers;
use App\Buyer;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Auth;
class BuyerController extends Controller
{
// use AuthenticatesUsers;
public function __construct()
{
// $this->middleware('guest')->except('logout');
$this->middleware('guest:buyer')->except('logout');
}
public function buyerIndex()
{
return view('auth.login');
}
public function handleBuyerLogin(Request $req)
{
$this->validate($req, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
if(Auth::attempt(
$req->only(['email', 'password'])
))
{
return redirect()->intended('/');
}
return redirect()
->back()
->with('error', 'Invalid Credentials');
}
public function showBuyerRegisterForm()
{
return view('auth.register');
}
public function registerBuyer(Request $request)
{
$this->validator($request->all())->validate();
$regBuyer = Buyer::create([
'username' => $request['username'],
'firstname' => $request['firstname'],
'middlename' => $request['middlename'],
'surname' => $request['surname'],
'phone_number' => $request['phone_no'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
'zipcode' => $request['zip_code'],
'address' => $request['address'],
]);
return redirect()->intended('auth/register');
}
}
这是路线 - web.php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/register-buyer', 'BuyerController@showBuyerRegisterForm');
Route::post('/buyer', [BuyerController::class, 'registerBuyer']);
Route::get('/register/seller', 'SellerController@showSellerRegisterForm')->name('seller');
解决方案
推荐阅读
- inkscape - Inkscape 查询:为什么我定义的页面尺寸在视觉上与导入的图像不匹配?
- php - Laravel 多对多关系仅适用于第一条记录
- java - 使用 JSOUP 解析 HTMl - 需要特定模式
- r - 如何通过在 R 中保持一些变量静态和动态来重构具有多个变量的数据帧
- php - 使用 SQL 数据库时,在后端使用 Update 语句而不是使用 Prepared 函数的主要好处是什么?
- c# - Google Cloud 上的 .net core 2.2 服务慢启动
- python - 尝试向 Azure REST API 发送 http 请求时出现 Python InvalidHeader 错误
- javascript - 如何让我的按钮在 onclick 事件后停止消失
- php - 如何在PHP中将一串html从一个页面回显到另一个页面
- jmeter - 有没有办法根据条件在Jmeter中传递下一个请求中的值是真的