Laravel muliptle形式问题

时间:2017-07-25 09:05:53

标签: html forms laravel

我正在尝试使用laravel验证表单。由于我有多种类型的用户,我需要不同的形式,因此我将数组作为形式的id属性:

<form method="POST" action="{{ route('user.register.submit', ['usertype'=>'company'])}}">
                {{ csrf_field() }}
                    <div class="form-group{{ $errors->has('company.leadersurname') ? ' has-error' : '' }}">
                        <label for="surname"><i class="fa fa-address-book-o" aria-hidden="true"></i> Фамилия</label>
                        @if ($errors->has('company.leadersurname'))
                            <span class="help-block">
                                <strong>{{ $errors->first('company.leadersurname') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="company['leadersurname']" placeholder="Введите вашу фамилию">
                    </div>
                    <div class="form-group{{ $errors->has('company.name') ? ' has-error' : '' }}">
                        <label for="name"><i class="fa fa-user-circle" aria-hidden="true"></i> Имя</label>
                        @if ($errors->has('company.leadername'))
                            <span class="help-block">
                                <strong>{{ $errors->first('company.leadername') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="company['leadername']" placeholder="Введите вашу имя">
                    </div>
                    <div class="form-group{{ $errors->has('company.email') ? ' has-error' : '' }}">
                        <label for="username"><i class="fa fa-envelope-o" aria-hidden="true"></i> Эл. почта</label>
                        @if ($errors->has('company.email'))
                            <span class="help-block">
                                <strong>{{ $errors->first('company.email') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" id="company['email']" placeholder="Введите электронную почту">
                    </div>
                    <div class="form-group{{ $errors->has('company.password') ? ' has-error' : '' }}">
                        <label for="password"><i class="fa fa-lock" aria-hidden="true"></i> Пароль </label>
                        @if ($errors->has('company.password'))
                            <span class="help-block">
                                <strong>{{ $errors->first('company.password') }}</strong>
                            </span>
                        @endif
                        <input type="password" class="form-control" name="company['password']" placeholder="Введите новую пароль">
                    </div>
                    <div class="form-group">
                        <label for="password-confirm"><i class="fa fa-lock" aria-hidden="true"></i> Повторите пароль </label>
                        <input type="password" class="form-control" name="company['password-confirm']" placeholder="Введите заново новую пароль">
                    </div>
                    <div class="form-group{{ $errors->has('company.name') ? ' has-error' : '' }}">
                        <label for="company-name"><i class="fa fa-building-o" aria-hidden="true"></i> Название компании</label>
                         @if ($errors->has('company.name'))
                            <span class="help-block">
                                <strong>{{ $errors->first('company.name') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="company['name']" placeholder="Введите имя вашего компанию">
                    </div>
                    <span class="green-text">Нажимая кнопку «Зарегистрироваться», я принимаю условия <a href="#">Пользовательского соглашени</a> и условия <a href="#">Политики конфиденциальности</a>.</span>
                    <div class="clearfix"></div>

                    <button type="submit" class="btn btn-primary pull-right green-button register">Зарегистрироваться</button>
                    <div class="clearfix"></div>
                </form>
            </div>
        <div id="lawyer" class="tab-pane fade in {{$activeuser==='lawyer' ? 'active' : ''}}">
                <span class="green-text">Для специалистов в области права. Вы сможете оказывать клиентам все виды юридических услуг, доступных на сайте.</span>
                <h4>Ваш новый аккаунт</h4>
                <form method="POST" action="{{ route('user.register.submit', ['usertype'=>'lawyer'])}}">
                {{ csrf_field() }}
                    <div class="form-group{{ $errors->has('lawyer.surname') ? ' has-error' : '' }}">
                        <label for="surname"><i class="fa fa-address-book-o" aria-hidden="true"></i> Фамилия</label>
                        @if ($errors->has('lawyer.surname'))
                            <span class="help-block">
                                <strong>{{ $errors->first('lawyer.surname') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="lawyer['surname']" placeholder="Введите вашу фамилию">
                    </div>
                    <div class="form-group{{ $errors->has('lawyer.name') ? ' has-error' : '' }}">
                        <label for="name"><i class="fa fa-user-circle" aria-hidden="true"></i> Имя</label>
                        @if ($errors->has('lawyer.name'))
                            <span class="help-block">
                                <strong>{{ $errors->first('lawyer.name') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="lawyer['name']" placeholder="Введите вашу имя">
                    </div>
                    <div class="form-group{{ $errors->has('lawyer.email') ? ' has-error' : '' }}">
                        <label for="username"><i class="fa fa-envelope-o" aria-hidden="true"></i> Эл. почта</label>
                        @if ($errors->has('lawyer.email'))
                            <span class="help-block">
                                <strong>{{ $errors->first('lawyer.email') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="lawyer['email']" placeholder="Введите электронную почту">
                    </div>
                    <div class="form-group{{ $errors->has('lawyer.password') ? ' has-error' : '' }}">
                        <label for="password"><i class="fa fa-lock" aria-hidden="true"></i> Пароль </label>
                        @if ($errors->has('lawyer.password'))
                            <span class="help-block">
                                <strong>{{ $errors->first('lawyer.password') }}</strong>
                            </span>
                        @endif
                        <input type="password" class="form-control" name="lawyer['password']" placeholder="Введите новую пароль">
                    </div>
                    <div class="form-group">
                        <label for="password-confirm"><i class="fa fa-lock" aria-hidden="true"></i> Повторите пароль </label>
                        <input type="password" class="form-control" name="lawyer['password-confirm']" placeholder="Введите заново новую пароль">
                    </div>
                    <span class="green-text">Нажимая кнопку «Зарегистрироваться», я принимаю условия <a href="#">Пользовательского соглашени</a> и условия <a href="#">Политики конфиденциальности</a>.</span>
                    <div class="clearfix"></div>
                                            <button type="submit" class="btn btn-primary pull-right green-button register">Зарегистрироваться</button>
                    <div class="clearfix"></div>
                </form>
            </div>
            <div id="client" class="tab-pane fade in {{$activeuser==='client' ? 'active' : ''}}">
                <span class="green-text">Выбирайте этот тип аккаунта, если вам нужна юридическая помощь.</span>
                <h4>Ваш новый аккаунт</h4>
                <form method="POST" action="{{ route('user.register.submit', ['usertype'=>'client'])}}">
                {{ csrf_field() }}
                    <div class="form-group{{ $errors->has('client.name') ? ' has-error' : '' }}">
                        <label for="name"><i class="fa fa-user-circle" aria-hidden="true"></i> Имя</label>
                        @if ($errors->has('client.name'))
                            <span class="help-block">
                                <strong>{{ $errors->first('client.name') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="client['name']" placeholder="Введите вашу имя">
                    </div>
                    <div class="form-group{{ $errors->has('client.email') ? ' has-error' : '' }}">
                        <label for="username"><i class="fa fa-envelope-o" aria-hidden="true"></i> Эл. почта</label>
                        @if ($errors->has('client.email'))
                            <span class="help-block">
                                <strong>{{ $errors->first('client.email') }}</strong>
                            </span>
                        @endif
                        <input type="text"  class="form-control" name="client['email']" placeholder="Введите электронную почту">
                    </div>
                    <div class="form-group{{ $errors->has('client.password') ? ' has-error' : '' }}">
                        <label for="password"><i class="fa fa-lock" aria-hidden="true"></i> Пароль </label>
                        @if ($errors->has('client.password'))
                            <span class="help-block">
                                <strong>{{ $errors->first('client.password') }}</strong>
                            </span>
                        @endif
                        <input type="password" class="form-control" name="client['password']" placeholder="Введите новую пароль">
                    </div>
                    <div class="form-group">
                        <label for="password-confirm"><i class="fa fa-lock" aria-hidden="true"></i> Повторите пароль </label>
                        <input type="password" class="form-control" name="client['password-confirm']" placeholder="Введите заново новую пароль">
                    </div>
                    <span class="green-text">Нажимая кнопку «Зарегистрироваться», я принимаю условия <a href="#">Пользовательского соглашени</a> и условия <a href="#">Политики конфиденциальности</a>.</span>
                    <div class="clearfix"></div>
                                            <button type="submit" class="btn btn-primary pull-right green-button register">Зарегистрироваться</button>
                    <div class="clearfix"></div>
                </form> 

在控制器中,使用https://laravel.com/docs/5.4/validation中显示的方法。这是我的代码:

$validator = Validator::make($request->all(), [
    'client.email'    => 'required|string|email|max:255|unique:clients|unique:lawyers',
    'client.password' => 'required|string|min:6|confirmed',
    'client.name'     => 'required',
]);

if ($validator->fails()) {
    return view('example')->withErrors($validator);
}

但是,当我提交有效数据时,它会给出错误消息:“required”

1 个答案:

答案 0 :(得分:0)

验证失败的原因是因为您在name属性中使用单引号,例如name="client['name']"

删除单引号,它应该有效:

<input type="text"  class="form-control" name="client[name]" placeholder="Введите имя вашего компанию">

希望这有帮助!