簡體   English   中英

如何在Laravel中自定義錯誤消息?

[英]How to customize error messages in Laravel?

這是我的代碼:

public function store(Request $request){

    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email',
        'content' => 'required|min:10',
    ]);

    $new_array = array();
    $new_array['name'] = $request->name;
    $new_array['email'] = $request->email;
    $new_array['content'] = $request->content;
    contact::create($new_array);

    return back();
}

現在我需要為這些過濾器設置一些新的錯誤消息(例如: requiredemail ,..)

目前,這是required的默認錯誤消息:

該名稱字段是必需的。

我該怎么改變它?

板條箱規則

public function user_registration_rules(array $data)
{
  $messages = [
    'full-name.required' => 'Please enter full name',     
    'address.required' => 'Please enter address'
  ];

  $validator = Validator::make($data, [
    'full-name' => 'required|min:5|max:70', 
    'address' => 'required'     
  ], $messages);

  return $validator;
}

在這樣的控制器中使用

$validator = $this->user_registration_rules($request_data);   
if($validator->fails())
{
  return redirect()->back()->withErrors($validator)->withInput();
}

您可以使用以下命令創建用於處理驗證的Laravel請求

php artisan make:request RequestName

您將在app \\ Http \\ Request中找到該文件

在文件中你會找到rules()函數,你可以在其中提到所有規則

 public function rules()
    {
        return [
            'name' => 'required',
        ];
    }

您可以為自定義消息創建message()函數

 public function messages()
    {
        return[
            'name.required' => 'The name field is required.'
        ];
    }

在控制器方法中添加此請求

public function methodName(RequestName $request)
    {
       //Your code
    }

您可以像這樣修改驗證器:

$validator = Validator::make($request, [
            'name' => 'required',
            'email' => 'required|email',
            'content' => 'required|min:10',
        ]);

現在,您將能夠捕獲驗證錯誤:

if ($validator->fails()) {
    $error_message = $validator->errors()->all();
    // Write Custom Validator Error Message according to the $error_message found.
}

無論如何,Laravel Validator提供了非常全面的錯誤消息。

按照:查看:

<div class="col-md-3">
    {{Form::label('Deposit Amount')}}
    {{Form::text('deposit_amount',Input::old('deposit_amount'),array('class'=>"form-control"))}}
    <span class="error">{!!$errors->first('deposit_amount')!!}</span>
    </div>

調節器

 use App\Http\Requests;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Input;
    use DB;
    use Hash;
    use Auth;
    use App\PaymentModel;
    use Redirect;
    use Response;

class TransactionController extends Controller
{
  public function payment(Request $request){

   $validator = Validator::make(Input::all(),  PaymentModel::Rules(), PaymentModel::$message);
   if ($validator->fails())
   {
      return \Redirect::back()->withErrors($validator)->withInput();
  }
  else
  {

    $deposit_amount=Input::get("deposit_amount");

    $obj = new PaymentModel();

    $obj->deposit_amount=$deposit_amount;

    if ($obj->save()) {

        Session::flash('success', 'Saved Successfully !!');

    } else {
      Session::flash('error', 'Some thing went wrong!!');
    }

    }

    return Redirect::action('TransactionController@payment');
  }
  }

模型

   public static function Rules(){
         $rules= array(
        'deposit_amount'=>'required|numeric',       
        ); 
       return $rules;
    }

     public static  $messages=array(
         'deposit_amount.required'=>'Please Enter Amount ',
        'deposit_amount.numeric'=>'Deposit Amount Must be a number ', 
        );

來自文檔: https//laravel.com/docs/5.3/validation#customizing-the-error-messages

您可以通過覆蓋messages方法來自定義表單請求使用的錯誤消息。 此方法應返回屬性/規則對的數組及其相應的錯誤消息:

/**
 * Get the error messages for the defined validation rules.
 *
 * @return array
 */
public function messages() 
{
    return [
    'title.required' => 'A title is required',
    'body.required'  => 'A message is required',
];
}

這只是來自文檔的復制粘貼。 你應該參考laravel docs,它們是最好的文檔之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM