Laravel 4.2无法正确渲染Blade视图

时间:2014-06-02 20:42:56

标签: php laravel laravel-4 blade hhvm

使用HHVM 3.1.0(最新版本)在Ubuntu 12.04上运行。 我刚刚尝试从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也缺少一些标签,因此我的视图文件显示时会有随机的刀片语法(如果需要,我可以提供一些代码示例)。

更新 这实际上是一个已知问题,并且已在Laravel和HHVM git存储库中报告。 它显然已在HHVM nightlies中修复,并将在下一版本中正常工作。

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

1 个答案:

答案 0 :(得分:1)

由于搜索结果非常高,因此可能值得注意的是,HHVM 3.2.0版本确实已经解决了这个问题。

如果你仍然坚持发布&lt; 3.2.0由于某种原因,我能够通过找到HHVM抛出错误的行(检查日志文件)并添加{{ "" }}来处理它。您提到的GitHub问题更详细地解释了这一点,但似乎Blade解析导致某些语句落在数组边界上 - &#34; fix&#34;我提到只需将您的Blade代码推送到下一个阵列。它并不漂亮,但如果你需要,它会起作用。