验证错误laravel后保持模态对话框打开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证错误laravel后保持模态对话框打开相关的知识,希望对你有一定的参考价值。

所以基本上我有一个blade.php,控制器页面和一个表单请求页面(验证)。如果出现错误,我正试图保持我的模态对话框打开,但我无法弄明白,我错过了哪些部分代码或需要更改?

blade.php

<div id="register" class="modal fade" role="dialog">
...

<script type="text/javascript">
if ({{ Input::old('autoOpenModal', 'false') }}) {
    //JavaScript code that open up your modal.
    $('#register').modal('show');
}
</script>

Controller.php这样

class ManageAccountsController extends Controller
{
    public $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function index() 
    {
        $users = User::orderBy('name')->get();
        $roles = Role::all();

        return view('manage_accounts', compact('users', 'roles'));
    }

    public function register(StoreNewUserRequest $request)
    {
        // process the form here
        $this->userRepository->upsert($request);
        Session::flash('flash_message', 'User successfully added!');

        //$input = Input::except('password', 'password_confirm');
        //$input['autoOpenModal'] = 'true'; //Add the auto open indicator flag as an input.

        return redirect()->back();
    }
}

class UserRepository {

    public function upsert($data)
    {

            // Now we can separate this upsert function here
        $user = new User;
        $user->name     = $data['name'];
        $user->email    = $data['email'];
        $user->password = Hash::make($data['password']);
        $user->mobile   = $data['mobile'];
        $user->role_id  = $data['role_id'];

            // save our user
        $user->save();

        return $user;
    }
}

request.php

class StoreNewUserRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        // create the validation rules ------------------------

        return [
        'name'             => 'required',                        // just a normal required validation
        'email'            => 'required|email|unique:users',     // required and must be unique in the user table
        'password'         => 'required|min:8|alpha_num',
        'password_confirm' => 'required|same:password',           // required and has to match the password field
        'mobile'           => 'required', 
        'role_id'          => 'required'
        ];
    }
}
答案

Laravel会自动检查会话数据中的错误,因此,$errors变量实际上始终可用于所有视图。如果要在出现任何错误时显示模态,可以尝试这样的方法:

<script type="text/javascript">
@if (count($errors) > 0)
    $('#register').modal('show');
@endif
</script>

以上是关于验证错误laravel后保持模态对话框打开的主要内容,如果未能解决你的问题,请参考以下文章

当我在 Primefaces 上打开带有必填字段的模态对话框时,如何阻止验证触发

Symfony 3.4 和模态表单验证

Web前瞻一个可以打开模态窗的 CSS 新属性

提交后保持物化 CSS 模态表单打开

有没有办法在对话框片段前面打开一个导航抽屉

模态对话框位于 Opensuse 其他窗口的后面