Генерация динамических классов CSS в Laravel-Blade
Я в классическом сценарии, где я хочу, основываясь на том, произошла ошибка или нет, чтобы изменить классы CSS. Как показано ниже, где has-error должна измениться соответственно.
<div class="form-group has-error">
Проект находится в Ларавеле, где мы в основном хотим сделать все в Blade
На данный момент мы придумали следующее решение, которое работает, но не выглядит симпатичным или интуитивно понятным, поэтому возникает вопрос, есть ли более оптимальный способ сделать это?
<div class="form-group
@if($errors->has('email'))
has-error
@endif
">
3 ответа
Решение
Попробуйте сокращенный код условия if else:
<form class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
Это кажется опрятным.
Даже формы авторизации Laravel 5.2 сделаны таким образом.
Вы можете использовать массивы для хранения имен классов
@php
$formGroupClasses = ['form-group'];
if ($errors->has('email')) {
$formGroupClasses[] = 'has-error';
}
@endphp
а затем взорвать их, чтобы создать строку
<form class="{{ implode(' ', $formGroupClasses) }}">
Это то, чем я занимаюсь. Вы также можете сделать это так:
@if($errors->has('email'))
<div class="form-group has-error">
//You can also edit classes of other elements
</div>
@else
<div class="form-group"></div>
@endif