我正在尝试使用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”
答案 0 :(得分:0)
验证失败的原因是因为您在name
属性中使用单引号,例如name="client['name']"
。
删除单引号,它应该有效:
<input type="text" class="form-control" name="client[name]" placeholder="Введите имя вашего компанию">
希望这有帮助!