Генерация динамических классов 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
Другие вопросы по тегам