Комментарий Laravel Blade перед "@if"

Иногда в HTML мне нужно избегать добавления лишних пробелов, но мне также нужно добавить блоки «@if ()». Для этого я применил такой подход:

some text{--

--}@if ($someCondition){--

--}more text with no space between

@endif

И этот подход отлично себя зарекомендовал. Однако после обновления моей среды разработки и живой среды до Laravel 5.5 (с Laravel 5.2) среда разработки работает нормально, но живая среда отображает вышеуказанный блейд в следующем HTML:

some text@if ($someCondition)more text with no space between

<?php endif; ?>

... Таким образом, оператор "if" сразу после комментария лезвия остается как простой текст.

Я знаю, что это возможно, потому что обе мои среды разработки правильно отображают страницу. Я просмотрел версии PHP и скопировал весь каталог кода, но я не могу найти между ними никакой разницы, не говоря уже о разнице, которая заставила бы это обрабатываться по-другому.

Есть ли причина, по которой движок лезвия Laravel не допускает "@" сразу после комментария лезвия?

Используется PHP 7.029, Laravel 5.5, CentOS.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 024
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Способом альтернатива решить исходную проблему будет напрямую напишите некоторый PHP-код для ваших операторов if:

some text<?php

if ($someCondition):

?>more text with no space between<?php
endif;
?>

(однако я согласен, что это не самый лучший способ написания шаблонов, так как у вас будет смесь Blade и PHP)

Laravel конвертирует ваши шаблоны лезвий в PHP, а затем использует эти преобразованные файлы для рендеринга. Так что, если вы напишете какой-нибудь PHP-код напрямую с вашими шаблонами Blade, он будет работать точно так же.

Всегда можно использовать встроенные php-вложения Blade ...

some text{{ if (condition) {do something} }}more text

Это дает гибкость встроенного php в ваш HTML.

Ответ принят как подходящий

Я обнаружил проблему. Представление было кэшировано в средах разработки, поэтому оно работало.

Похоже, что в Laravel появилась новая ошибка где-то между 5.3 и 5.5. Комментарии к лезвиям удаляются до того, как будет проанализирована остальная часть лезвия, что может вызвать проблемы, как я показал в вопросе здесь. Это работало ранее в Laravel 5.2.

Я нашел работу:

some text{{null

}}@if ($someCondition){--

--}more text with no space between

@endif

Производит то, что работает:

some text<?php echo e(null); ?><?php if ($someCondition): ?>more text with no space between

<?php endif; ?>

Другие вопросы по теме