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

主頁(yè) > 知識(shí)庫(kù) > laravel unique驗(yàn)證、確認(rèn)密碼confirmed驗(yàn)證以及密碼修改驗(yàn)證的方法

laravel unique驗(yàn)證、確認(rèn)密碼confirmed驗(yàn)證以及密碼修改驗(yàn)證的方法

熱門標(biāo)簽:熱線電話機(jī)器人 電銷招聘機(jī)器人 事業(yè)單位如何百度地圖標(biāo)注 福泉電話機(jī)器人 地圖標(biāo)注入哪個(gè)科目 太原極信防封電銷卡 天津營(yíng)銷電話機(jī)器人加盟代理 格陵蘭島地圖標(biāo)注 南寧crm外呼系統(tǒng)平臺(tái)

confirmed

驗(yàn)證字段必須有一個(gè)匹配字段 foo_confirmation,例如,如果驗(yàn)證字段是 password,必須輸入一個(gè)與之匹配的 password_confirmation 字段。

same:field

給定字段和驗(yàn)證字段必須匹配

 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);
 }

經(jīng)驗(yàn)證,上面的驗(yàn)證方式在update的時(shí)候會(huì)出問(wèn)題,修改的時(shí)候會(huì)驗(yàn)證unique,導(dǎo)致不能保存,所以需要修改下。

官網(wǎng)說(shuō):

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句話是: 

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

當(dāng)然,您需要驗(yàn)證電子郵件地址是否唯一。但是,如果用戶僅更改名稱字段而不更改電子郵件字段,則不希望拋出驗(yàn)證錯(cuò)誤,因?yàn)橛脩粢呀?jīng)是電子郵件地址的所有者,為了指示驗(yàn)證者忽略用戶的ID,我們將使用Rule該類來(lái)流暢地定義規(guī)則。

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

所以修改為

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

在更新密碼時(shí),我們需要驗(yàn)證舊的密碼是否正確,那我們需要使用自定義驗(yàn)證。

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在驗(yàn)證失敗時(shí)應(yīng)調(diào)用的回調(diào)。

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

所以密碼是否正確可以這樣驗(yàn)證

'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);
 }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Laravel中unique和exists驗(yàn)證規(guī)則的優(yōu)化詳解

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《laravel unique驗(yàn)證、確認(rèn)密碼confirmed驗(yàn)證以及密碼修改驗(yàn)證的方法》,本文關(guān)鍵詞  laravel,unique,驗(yàn)證,確認(rèn),密碼,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《laravel unique驗(yàn)證、確認(rèn)密碼confirmed驗(yàn)證以及密碼修改驗(yàn)證的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于laravel unique驗(yàn)證、確認(rèn)密碼confirmed驗(yàn)證以及密碼修改驗(yàn)證的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 信宜市| 昆明市| 张北县| 师宗县| 来安县| 屯门区| 乐清市| 钟祥市| 靖西县| 常山县| 赫章县| 沙坪坝区| 卢龙县| 体育| 宁化县| 东莞市| 忻州市| 涪陵区| 永清县| 文山县| 吉林省| 阿拉善盟| 定州市| 常宁市| 桃源县| 泾阳县| 达州市| 曲阜市| 巴林右旗| 徐州市| 纳雍县| 侯马市| 九台市| 深圳市| 平武县| 大化| 稷山县| 静海县| 呼和浩特市| 永年县| 长海县|