我有 2 個注冊和登錄表格。一個用于用戶,其他用于管理角色。在用戶角色中,我使用來自 laravel 的身份驗證,效果很好。但是,問題是當我從管理員角色創建自定義注冊時,它不能正常作業。它無法存盤到資料庫,當我檢查使用echo功能時,它不會列印任何內容,只是重繪 頁面。
你能幫我嗎,怎么了???
這是我的路線
Route::get('/adminregister', 'Auth\LoginController@formreg')->name('admin-reg');這是我的控制器
namespace App\Http\Controllers\Admin\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
class AregisterController extends Controller
{
use RegistersUsers;
public function __construct()
{
// $this->middleware('guest');
}
public function create(Request $request)
{
$this->validate(request(),[
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
if ($request('confirmpassword') == $request('password')){
$user = User::create(request(['name','email' ,'password','is_admin' => True, ]));
// return redirect()->route('admin-login')->with('status', 'Successfully create account');;
}
else {
return redirect()->route('admin-reg')->with('status', 'Confirm Password not match');;
}
}
}
在這個控制器中,首先我想檢查密碼將確認密碼然后將其存盤到資料庫中。
- 這是我的查看頁面
<form action ="{{ route('user-create') }}" method="POST" enctype="multipart/form-data" >
<input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
<div class="row mb-3">
<div class="col-md-12">
<div class="form-floating mb-2 mb-md-0">
<input class="form-control" id="inputFirstName" type="text" placeholder="Enter your first name" name="name" />
<label for="inputFirstName">Name </label>
</div>
</div>
</div>
<div class="form-floating mb-3">
<input class="form-control" id="inputEmail" type="email" placeholder="name@example.com" name="email"/>
<label for="inputEmail">Email address</label>
</div>
<div class="row mb-3">
<div class="col-md-6">
<div class="form-floating mb-3 mb-md-0">
<input class="form-control" id="inputPassword" type="password" placeholder="Create a password" name="password" />
<label for="inputPassword">Password</label>
</div>
</div>
<div class="col-md-6">
<div class="form-floating mb-3 mb-md-0">
<input class="form-control" id="inputPasswordConfirm" type="password" placeholder="Confirm password" name="confirmpassword" />
<label for="inputPasswordConfirm">Confirm Password</label>
</div>
</div>
</div>
<div class="mt-4 mb-0">
<div class="d-grid"><button type="submit" class="btn btn-primary">Create account</button></div>
</div>
</form>
你對如何解決它有什么建議嗎?它不能在資料庫中存盤任何東西,當我使用“echo”檢查它時,什么都沒有:) 謝謝
uj5u.com熱心網友回復:
該confirmed規則正在尋找一個欄位名{field}_confirmation。因此,如果您嘗試確認“密碼”輸入,它將尋找一個名為password_confirmation. 因此需要將表單中的輸入更改為 name password_confirmation。
您不需要比較提交的 2 個密碼欄位,因為該confirmed規則已經為您完成了該操作(這就是它的用途;確認它們匹配)。
Request 類不可呼叫,$request(...). 這將引發錯誤,因為它不可呼叫(沒有__invoke在其上定義使其可呼叫的方法)。
要創建用戶,您可以使用以下only方法輕松獲取所需的欄位:
$request->only('name', 'email', 'password')
您可以將is_admin值添加到only呼叫回傳的陣列中:
User::create($request->only('name', 'email', 'password') ['is_admin' => true])
您必須確保該is_admin欄位在模型上是“可填充的”。
通常,您不需要request()在此方法中呼叫任何位置,因為您已經注入了 Request 實體$request。
此外,您的表單不處理檔案上傳,因此您不需要enctype="multipart/form-data".
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407381.html
標籤:
