Пользовательский Blade-провайдер Laravel 5.5 if

Я хотел бы сделать собственный поставщик лезвий для очистки моего кода.

public function boot() {
Blade::if ('hasError', function ($field) {
return session('errors')->has($field);
});
}

Вот как я использую в виду:

@hasError('email') has-error @endif

Но я получаю это сообщение об ошибке:

Вызов функции-члена имеет () на нуль …

У кого-нибудь есть идеи?

2

Решение

Вместо:

return session('errors')->has($field);

Сделай это:

return session()->has('errors.' . $field);
0

Другие решения

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
0

В настоящее время это будет то же самое, что и в представлении:

@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;
}
});

пример

Документация

0
По вопросам рекламы [email protected]