Laravel 4.2 неправильно отображает представления Blade

Работает в Ubuntu 12.04 с использованием HHVM 3.1.0 (последняя версия). Недавно я попытался обновить Laravel 4.1 до 4.2, и у меня действительно странная проблема с неправильным компилированием представлений Blade. В журналах Laravel не было ошибок, поэтому я проверил журналы HHVM. Оказывается, при попытке загрузить сохраненное представление с помощью блейда у HHVM возникали ошибки компиляции. Я открыл сохраненное представление и обнаружил, что различные варианты использования Blade компилируются неправильно.

Оригинальный код лезвия:

<head>
  @include('layouts.partials._favicon')
</head>

<body id="signup-rotate">
  @include('layouts.partials._flash-messages')
...

Неправильная компиляция:

<head>
 <?php echo $__env->make(, array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>('layouts.partials._favicon')
</head>

<body id="signup-rotate">
  <?php echo $__env->make('layouts.partials._flash-messages', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>
...

Как видите, код в шапке почему-то не добавляет представление для включения в функцию, а добавляет его в конец. Это, очевидно, приводит к тому, что HHVM не может скомпилировать код, и возникает ошибка. Мне кажется странным, что большинство из этих включений работают, а другие нет.

Это известная проблема с Laravel 4.2, или в моем случае есть что-то уникальное, что может вызвать это? Похоже, что в Blade также отсутствуют некоторые теги, поэтому у меня будет случайный синтаксис Blade в моих файлах просмотра, когда они будут отображаться (я могу предоставить несколько примеров кода, если потребуется).

Обновление На самом деле это известная проблема, о которой сообщалось как в репозиториях Laravel, так и в репозиториях HHVM git. По-видимому, это было исправлено в ночных играх HHVM и будет работать правильно в следующем выпуске.

https://github.com/facebook/hhvm/issues/2841


person aaronhuisinga    schedule 02.06.2014    source источник
comment
Прежде всего, Laravel 4.2 находится в бета-версии, и хотя HHVM должен быть полностью обратно совместим, у него могут быть некоторые проблемы с обработкой блейда.   -  person Ortix92    schedule 03.06.2014
comment
4.2 фактически вышла из бета-версии. Я пытаюсь использовать первую стабильную версию.   -  person aaronhuisinga    schedule 03.06.2014
comment
Вы очистили приложение/хранилище/просмотры?   -  person menjaraz    schedule 03.06.2014
comment
Попробуйте те же файлы в PHP без HHVM. У него такая же проблема?   -  person Matt Stauffer    schedule 03.06.2014


Ответы (1)


Поскольку это довольно высоко в результатах поиска, вероятно, стоит отметить, что это действительно исправлено в выпуске HHVM 3.2.0.

Если вы по какой-либо причине все еще застряли на выпуске ‹ 3.2.0, я смог справиться с этим, найдя строку, в которой HHVM выдал ошибку (проверьте файлы журнала), и добавив в файл {{ "" }}. Упомянутая вами проблема GitHub объясняет это более подробно, но кажется, что синтаксический анализ Blade приводил к тому, что некоторые операторы попадали на границу массива - «исправление», о котором я упоминал, просто переносит ваш код Blade в следующий массив. Это не очень красиво, но это работает, если вам это нужно.

person gautam    schedule 07.08.2014