婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > laravel unique驗證、確認密碼confirmed驗證以及密碼修改驗證的方法

laravel unique驗證、確認密碼confirmed驗證以及密碼修改驗證的方法

熱門標簽:熱線電話機器人 電銷招聘機器人 事業單位如何百度地圖標注 福泉電話機器人 地圖標注入哪個科目 太原極信防封電銷卡 天津營銷電話機器人加盟代理 格陵蘭島地圖標注 南寧crm外呼系統平臺

confirmed

驗證字段必須有一個匹配字段 foo_confirmation,例如,如果驗證字段是 password,必須輸入一個與之匹配的 password_confirmation 字段。

same:field

給定字段和驗證字段必須匹配

 protected $fillable = ['name', 'password'];
 
 public static $rules = [
  'name'   => 'required|unique:managers',
  'password' => 'required|confirmed',
  'password_confirmation' => 'required|same:password'
 ];
 
 public static function error_message() 
 {
  return [
   'name.required' => __('tyvalidation.name'),
   'name.unique' => __('tyvalidation.unique'),
   'password.required' => __('tyvalidation.password'),
   'password.confirmed' => __('tyvalidation.confirmed'),
  ];
 }
 
 public function setPasswordAttribute($value)
 {
  $this->attributes['password'] = Hash::make($value);
 }

經驗證,上面的驗證方式在update的時候會出問題,修改的時候會驗證unique,導致不能保存,所以需要修改下。

官網說:

Sometimes, you may wish to ignore a given ID during the unique check. For example, consider an "update profile" screen that includes the user's name, e-mail address, and location. Of course, you will want to verify that the e-mail address is unique. However, if the user only changes the name field and not the e-mail field, you do not want a validation error to be thrown because the user is already the owner of the e-mail address.

To instruct the validator to ignore the user's ID, we'll use the Rule class to fluently define the rule. In this example, we'll also specify the validation rules as an array instead of using the |character to delimit the rules:

重要的2句話是: 

有時,您可能希望在唯一檢查期間忽略給定的ID。

當然,您需要驗證電子郵件地址是否唯一。但是,如果用戶僅更改名稱字段而不更改電子郵件字段,則不希望拋出驗證錯誤,因為用戶已經是電子郵件地址的所有者,為了指示驗證者忽略用戶的ID,我們將使用Rule該類來流暢地定義規則。

use Illuminate\Validation\Rule;
 
Validator::make($data, [
  'email' => [
    'required',
    Rule::unique('users')->ignore($user->id),
  ],
]);

所以修改為

'name'   => [
     'required',
     Rule::unique('managers')->ignore($id),
    ],

在更新密碼時,我們需要驗證舊的密碼是否正確,那我們需要使用自定義驗證。

Using Closures

If you only need the functionality of a custom rule once throughout your application, you may use a Closure instead of a rule object. The Closure receives the attribute's name, the attribute's value, and a $fail callback that should be called if validation fails:

Closure接收屬性的名稱,屬性的值以及$fail在驗證失敗時應調用的回調。

$validator = Validator::make($request->all(), [
  'title' => [
    'required',
    'max:255',
    function($attribute, $value, $fail) {
      if ($value === 'foo') {
        return $fail($attribute.' is invalid.');
      }
    },
  ],
]);

所以密碼是否正確可以這樣驗證

'old_password' => [
     'required',
     function($attribute, $value, $fail) use ($manager) 
     {
      if (!Hash::check($value, $manager->password)) 
      {
       return $fail(__('tyvalidation.old_password'));
      }
     },
    ],

所有代碼如下:

create.html

div class="form-group">
      label>{!! __('tycms.name') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="text" class="form-control is-invalid" name="name" value="" placeholder="{!! __('tycms.name') !!}" required />
       @foreach ($errors->get('name') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>
     div class="form-group">
      label>{!! __('tycms.password') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="password" class="form-control is-invalid" name="password" value="" placeholder="{!! __('tycms.password') !!}" required />
       @foreach ($errors->get('password') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>
     div class="form-group">
      label>{!! __('tycms.confirm_password') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="password" class="form-control is-invalid" name="password_confirmation" value="" placeholder="{!! __('tycms.confirm_password') !!}" required />
       @foreach ($errors->get('password') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>

store

 $input_all = $request->all();
   $validator = Validator::make($input_all, Manager::rules(), Manager::error_message());
   if ($validator->fails()) 
   {
     return redirect()
           ->action($this->class_basename . '@create')
           ->withErrors($validator)
           ->withInput();
   }
   $model = Manager::create($input_all);

edit.html

div class="form-group">
      label>{!! __('tycms.name') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="text" class="form-control is-invalid" name="name" value="{{ $model->name }}" readonly="readonly" placeholder="{!! __('tycms.name') !!}" required />
       @foreach ($errors->get('name') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>
     div class="form-group">
      label>{!! __('tycms.old_password') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="password" class="form-control is-invalid" name="old_password" value="" placeholder="{!! __('tycms.old_password') !!}" required />
       @foreach ($errors->get('old_password') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>
     div class="form-group">
      label>{!! __('tycms.password') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="password" class="form-control is-invalid" name="password" value="" placeholder="{!! __('tycms.password') !!}" required />
       @foreach ($errors->get('password') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>
     div class="form-group">
      label>{!! __('tycms.confirm_password') !!}/label>
      div class="input-group">
       div class="input-group-prepend">
        span class="input-group-text change-bg">T/span>
       /div>
       input type="password" class="form-control is-invalid" name="password_confirmation" value="" placeholder="{!! __('tycms.confirm_password') !!}" required />
       @foreach ($errors->get('password') as $message) 
       div class="invalid-feedback">
        {{ $message }}
       /div>
       @endforeach
      /div>
     /div>

update

$input_all = $request->all();
   $model = $this->findById($id);
 
   $validator = Validator::make($input_all, Manager::rules($id, $model), Manager::error_message());
   if ($validator->fails()) 
   {
     return redirect()
           ->action($this->class_basename . '@edit', ['id' => $id])
           ->withErrors($validator)
           ->withInput();
   }
   $model->fill($input_all);
   $model->save();
 

Models\Manager

protected $table = 'managers';
 
 protected $fillable = ['name', 'password'];
 
 /*public static $rules = [
  'name'   => 'required|unique:managers',
  'password' => 'required|confirmed',
  'password_confirmation' => 'required|same:password'
 ];*/
 
 public static function rules ($id = null, $manager = null) 
 {
  if (empty($id))
  {
   $rules = [
    'name'   => 'required|unique:managers',
    'password' => 'required|confirmed',
    'password_confirmation' => 'required|same:password'
   ];
  } else 
  {
   $rules = [
    'name'   => [
     'required',
     Rule::unique('managers')->ignore($id),
    ],
    'old_password' => [
     'required',
     function($attribute, $value, $fail) use ($manager) 
     {
      if (!Hash::check($value, $manager->password)) 
      {
       return $fail(__('tyvalidation.old_password'));
      }
     },
    ],
    'password' => 'required|confirmed',
    'password_confirmation' => 'required|same:password'
   ];
  }
  return $rules;
 }
 
 public static function error_message() 
 {
  return [
   'name.required' => __('tyvalidation.name'),
   'name.unique' => __('tyvalidation.unique'),
   'password.required' => __('tyvalidation.password'),
   'password.confirmed' => __('tyvalidation.confirmed'),
  ];
 }
 
 public function setPasswordAttribute($value)
 {
  $this->attributes['password'] = Hash::make($value);
 }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Laravel中unique和exists驗證規則的優化詳解

標簽:自貢 金華 香港 郴州 佳木斯 通化 寶雞 阿克蘇

巨人網絡通訊聲明:本文標題《laravel unique驗證、確認密碼confirmed驗證以及密碼修改驗證的方法》,本文關鍵詞  laravel,unique,驗證,確認,密碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《laravel unique驗證、確認密碼confirmed驗證以及密碼修改驗證的方法》相關的同類信息!
  • 本頁收集關于laravel unique驗證、確認密碼confirmed驗證以及密碼修改驗證的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日喀则市| 新邵县| 麟游县| 监利县| 衡阳市| 鲜城| 青岛市| 宁明县| 临潭县| 天气| 平遥县| 文山县| 南皮县| 大城县| 罗定市| 涿州市| 崇信县| 黔东| 凤阳县| 徐汇区| 湖南省| 广宗县| 鞍山市| 伽师县| 普格县| 广水市| 平陆县| 阿克陶县| 温宿县| 香格里拉县| 武宣县| 文昌市| 海淀区| 新沂市| 略阳县| 沙坪坝区| 紫云| 阜康市| 东莞市| 岳阳市| 壤塘县|