Я хотел бы сделать собственный поставщик лезвий для очистки моего кода.
public function boot() {
Blade::if ('hasError', function ($field) {
return session('errors')->has($field);
});
}
Вот как я использую в виду:
@hasError('email') has-error @endif
Но я получаю это сообщение об ошибке:
Вызов функции-члена имеет () на нуль …
У кого-нибудь есть идеи?
Вместо:
return session('errors')->has($field);
Сделай это:
return session()->has('errors.' . $field);
if($validator->fails()) {
return session()->has('errors.' . $field);
Вы можете поймать ошибку на ваш взгляд с помощью
@if ($errors->any())
{{ implode('', $errors->all('<div>:message</div>')) }}
@endif
ОБНОВИТЬ
Для отображения ошибки под каждым полем вы можете сделать это следующим образом.
<input type="text" name="firstname">
@if ($errors->has('firstname'))
<div class="error">{{ $errors->first('firstname') }}</div>
@endif
В настоящее время это будет то же самое, что и в представлении:
@if (session('errors')->has('email'))
has-error
@endif
Используя директиву Blade :: if, если вы хотите иметь это в своем представлении:
@hasError('email')
has-error
@endhasError
У вас должно быть что-то вроде этого в вашем методе загрузки, начиная с Laravel 5.5:
use Illuminate\Support\Facades\Blade;
public function boot() {
Blade::if('hasError', function ($field) {
if(session()->has($field){
/* some validation code
if(validation){return true}else{return false;}
*/
}else{
return false;
}
});