Я создаю страницу, которая в первую очередь представляет собой форму с view::make
в Laravel и сбой, вызывающий ERR_CONNECTION_RESET. После долгого исследования и многих красных сельдей я начал стирать (не комментируя) случайные фрагменты из файла клинка для представления и понял, что если я
a) стереть 2 вызова {{Form}}
внутри этого раздела формы
б) удалите {{-- and --}}
из этого раздела формы
{{-- <div class="form-row"> {{ Form::label('foo', 'foo:') }} {{ Form::text('foo') }} </div> <div class="form-row"> {{ Form::label('foo', 'foo:') }} {{ Form::text('foo') }} </div> <div class="form-row"> {{ Form::label('foo', 'foo') }} {{ Form::text('foo') }} </div> --}}
страница будет отображаться. Я не уверен, в чем именно причина. Существуют и другие блоки выше и ниже, хотя это раздел с тремя комментариями, который ни один из остальных не существует.
Кто-нибудь знает, что вызывает это? Запуск на WAMP, если это имеет значение.
Примечание: этот ответ был дан для Laravel 4.2, но он все равно должен применяться. Существуют некоторые особые случаи компиляции Blade, которые зависят от версии Laravel и / или PHP, поэтому лучше всего использовать комментарии Blade для самых простых случаев использования.
Решение состоит в том, чтобы использовать только комментарии Blade для простых замечаний или комментировать однолинейные функции Blade. Не вставляйте Blade / PHP-код внутри комментариев Blade. Используйте стандартные комментарии блоков PHP, чтобы прокомментировать несколько строк кода в одном комментарии (PHP, HTML, несколько функций лезвия и т. Д.).
Действительные комментарии Blade:
Функция Single Blade:
{{-- Form::text('foo') --}}
Примечание:
{{-- Form Section 1 --}}
Недействительные комментарии Blade:
Неправильный синтаксис:
{{-- Form::text('foo') -- }}
"@" Внутри комментария Blade
{{-- @Form::text('foo') --}}
Вложенный PHP:
{{-- <?php echo "foo"; echo "bar ?> --}}
Вложенные клинки:
{{-- {{ HTML::form("foo") }}; {{ HTML::form("bar") }}; --}}
Вместо этого используйте комментарии PHP Block. Они все еще пригодны для использования в файле blade.php
<?php /* {{ HTML::form("foo") }}; {{ HTML::form("bar") }}; */ ?>
Кроме того, закомментируйте свой Blade по одной строке за раз:
{{-- HTML::form("foo") --}}; {{-- HTML::form("bar") --}};
Внутренности:
Для кода OP компилятор Laravel Blade будет генерировать временный файл PHP, содержащий следующий PHP / HTML:
<?php /* <div class="form-row"> <?php echo Form::label('foo', 'foo:'); ?> <?php echo Form::text('foo'); ?> </div> <div class="form-row"> <?php echo Form::label('foo', 'foo:'); ?> <?php echo Form::text('foo'); ?> </div> <div class="form-row"> <?php echo Form::label('foo', 'foo'); ?> <?php echo Form::text('foo'); ?> </div> */ ?>
Blade внутри ваших комментариев Blade все еще анализируется на PHP. Теги конца PHP в блоке-комментарии PHP приводят к тому, что парсер Apache заканчивается на ранней стадии, что приводит к некорректированному PHP / HTML, который может привести к сбою вашего соединения (вероятно, вызванного оборванными */ ?>
).
?> выходит из режима PHP и возвращается в режим HTML, а // или # не может повлиять на это.
Использование любого из вышеупомянутых недопустимых комментариев Blade приведет к подобным проблемам компиляции. Избегайте комментариев Blade для чего-либо, кроме замечаний или комментирующих функции Blade из одной строки за раз.
У меня подобный симптом, и, похоже, это связано с длиной комментария. Я протестировал его с комментарием, который вообще не содержит каких-либо инструкций PHP или блейдов:
{{-- 0123456789abcdef 0123456789abcdef 0123456789abcdef --}}
Я продолжал добавлять копии повторяющейся строки, пока она не разбилась. За комментарием лексически следовал оператор blade @if
, а соответствующий <php if(...): ?>
Не @if
в скомпилированный шаблон, а закрывал <?php endif; ?>
<?php endif; ?>
, что привело к синтаксически недействительному скомпилированному шаблону.
Кажется, это ошибка в компиляторе лезвия, и я сообщу об этом.
Обходной путь состоит в том, чтобы разделить длинные клики с помощью -}} {{-.
У меня такая же проблема с laravel 5.1 и PHP 7 (новая усадьба). Работа была связана с этим:
<?php /* XXX */?>
вместо этого:
{{-- XXX -- }}.
Блейд-комментарии, подобные этой, были проблемой в моем случае:
{{-- @if ($test) <div>something</div> @else <div>something else</div> @endif --}}
-{{-- @if ($test) <div>something</div> @else <div>something else</div> @endif --}}