Если вы сделаете это, вы получите сообщение об ошибке:
<p>@if($foo)@if($bar)test@endif@endif</p>
И если вы это сделаете, вы получите <p> test </p>
, добавив слишком много пробелов:
<p>@if($foo) @if($bar)test@endif @endif</p>
Есть ли способ избежать этого?
Изменить: см. Мой ответ ниже для получения обновленного ответа. Есть чистый способ сделать это без хаков или внешних библиотек.
Попробуйте с тернарным оператором, нет контроля пробелов в Laravel
<p>{{ $foo ? ($bar ? 'test' : '') : ''}}</p>
Вы всегда можете использовать пакет hedronium / spaceless-blade на упаковке, чтобы добавить эту функциональность в Blade.
Насколько я знаю, в Blade нет spaceless
. Если вы хотите использовать стандартные теги Blade, у вас будут дополнительные пробелы. Существует обсуждение github с предложением для нового тега
похоже, что вы получаете много поискового трафика, поэтому я решил, что добавлю обновление, чтобы поделиться тем, как я обрабатываю это в наши дни. По сути, это немного больше кода, но в итоге он становится глупым простым и очень чистым:
@if($foo) <p>Test</p> @elseif($bar) <p>Test2</p> @else <p>Test3</p> @endif
Мораль этой истории – это когда вы работаете с клинком, не пытайтесь втиснуть множество условностей в элементы. Скорее, результат условного содержит элемент. Он чист, прост в чтении и содержит всего несколько персонажей.