首页 > 解决方案 > Create flash message in class request laravel

问题描述

i have a problem in my project. How to create a flash session in class request / validation ? I haven't found a way.

This my Request class code

class UserRequest extends FormRequest {

public function authorize()
{
    return TRUE;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    $rules = [
        "user_fullname" => "required|alpha_spaces",
        "user_email" => "required|email|unique,list_user,user_email",
        "user_phone" => "nullable|numeric",
        "access_id" => "required|alpha_num_spaces",
        "user_password" => "required|min:6|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9]).*$/|confirmed",
        "warehouse_id" => "alpha_num_spaces|nullable",
    ];

    if ($this->method() == "POST") {
        $rules["province_id"] = "alpha_num_spaces|nullable";
        $rules["district_id"] = "alpha_num_spaces|nullable";
        $rules["subdistrict_id"] = "alpha_num_spaces|nullable";
        $rules["kode_pos"] = "alpha_num_spaces|nullable";
        $rules["user_address"] = "alpha_num_spaces|nullable";
    }

    return $rules;
}

public function messages()
{
    return [
        "user_password.regex" => "Password wajib terdiri dari huruf & angka!"
    ];
}

}

This my controller

public function process_user_add(UserRequest $user_request)
{
    $user_request->validated();

    $request = \request();
    $input = (object) \request()->all();
    $check = User::add_user_from_owner($input);

    if ($check->success) {
        return \redirect()->to("administrator/user/" . \encrypt_url($check->id))->with("message", "<script>sweet('success', 'Success!', '$check->message')</script>");
    } else {
        return \redirect()->back()->with("message", "<script>sweet(\"error\", \"Failed!\", \"$check->message\")</script>")->withInput($request->all());
    }
}

How to i check if validation failed, i create a flash message? To my knowledge, class request is auto redirect goback url if validation error

标签: laravel

解决方案


你可以使用 Validator Facade。Validator::make() 之后,您可以使用 failed() 方法恢复失败。看看下面的代码:

$rules = array(
    "user_fullname" => "required|alpha_spaces",
    "user_email" => "required|email|unique,list_user,user_email",
    "user_phone" => "nullable|numeric",
    "access_id" => "required|alpha_num_spaces",
    "user_password" => "required|min:6|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9]).*$/|confirmed",
    "warehouse_id" => "alpha_num_spaces|nullable",
);

$validator = Validator::make($request->all(), $rules);

if ($validator->fails())
{
    return Redirect::to('/your_url')->withInput()->withErrors($validator);
}

推荐阅读