如何在 laravel 身份验证期间附加到用户创建多个复选框
Posted
技术标签:
【中文标题】如何在 laravel 身份验证期间附加到用户创建多个复选框【英文标题】:How to attach to User create multiple checkboxes during laravel authentication 【发布时间】:2021-05-30 06:17:54 【问题描述】:大家下午好!
在我的项目中,我必须直接在用户的注册中创建一个新用户,该用户将是一家餐厅。
注册后,我可以将更多类型的餐厅与登录的用户相关联。
我已经进行了迁移和关系,一切正常。 这是我写的允许登录用户(餐厅)添加更多类型。
public function typologyAdd()
$typologies = Typology::all();
return view('pages.typology-add',compact('typologies'));
public function typologyStore(Request $request)
$data = $request -> all();
$user = Auth::user();
$typologies = Typology::findOrFail($data['typologies']);
$user -> typologies() -> sync($typologies);
return redirect() -> route('home');
所以这只有在我注册用户后才有效。 我想在注册页面时输入这个逻辑。
我试图修改 RegisterController 但我不知道该怎么做:
protected function validator(array $data)
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'indirizzo' => ['required' ,'string','max:255'],
'piva' => ['required','string','min:11','max:11','digits:11','unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'indirizzo' => $data['indirizzo'],
'piva' => $data['piva'],
'password' => Hash::make($data['password']),
]);
并将复选框放在 Register.blade.php 中
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li> $error </li>
@endforeach
</ul>
</div>
@endif
<div class="card-header"> __('Register') </div>
<div class="card-body">
<form method="POST" action=" route('register') ">
@csrf
<div class="form-group row">
<label for="name" class="col-md-4 col-form-label text-md-right"> __('Name') </label>
<div class="col-md-6">
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value=" old('name') " required autocomplete="name" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong> $message </strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right"> __('E-Mail Address') </label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value=" old('email') " required autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong> $message </strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right"> __('Password') </label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong> $message </strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password-confirm" class="col-md-4 col-form-label text-md-right"> __('Confirm Password') </label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
</div>
</div>
<div class="form-group row">
<label for="indirizzo" class="col-md-4 col-form-label text-md-right"> __('indirizzo') </label>
<div class="col-md-6">
<input id="indirizzo" type="text" class="form-control" name="indirizzo" value=" old('indirizzo') " maxlength="255" required>
@error('indirizzo')
<span class="invalid-feedback" role="alert">
<strong> $message </strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="piva" minlenght="11" maxlength="11" class="col-md-4 col-form-label text-md-right"> __('piva') </label>
<div class="col-md-6">
<input id="piva" type="text" class="form-control @error('piva') is-invalid @enderror" name="piva" value=" old('piva') " required>
@error('piva')
<span class="invalid-feedback" role="alert">
<strong> $message </strong>
</span>
@enderror
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
__('Register')
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
希望有人能给我一些关于如何做的想法,感谢那些阅读和回答的人
【问题讨论】:
【参考方案1】:在RegisterController.php
中,您可以通过执行以下操作来获取新创建的用户。
protected function create(array $data)
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'indirizzo' => $data['indirizzo'],
'piva' => $data['piva'],
'password' => Hash::make($data['password']),
]);
// Do actions on $user and finally return $user
return $user;
如果您需要任何验证规则,并且如果您正在执行关系数据输入,我建议您执行基于 SQL 事务的插入。如果没有抛出 SQL 错误,则提交数据。否则回滚更改以防止出现问题。
【讨论】:
感谢您的回答!!我正在考虑这样做,但我需要在注册页面中显示我已经在表类型中的所有类型,当然当我尝试在注册刀片中“foreach它们”时,它无法识别变量 $typologies。我试图理解为什么。 确保将变量传递给视图。视图不识别变量意味着变量首先没有传递到视图中。您可能需要覆盖负责为此生成注册表单的控制器功能。完成后,您将能够访问新的输入变量,无论是复选框还是单选按钮或其他东西。是否需要验证并在 $user 对象上方执行关系数据输入。以上是关于如何在 laravel 身份验证期间附加到用户创建多个复选框的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 用户未通过身份验证时如何重定向到所需页面
有没有办法在没有数据库的情况下使用 laravel 4.2 身份验证?
如何在 Laravel 和 Vue.js 中使用 jwt-auth 检查用户是不是经过身份验证