z0d*_*14c 21 php web laravel blade
我正在渲染一个主要是view::makeLaravel 形式的页面,它正在崩溃,导致ERR_CONNECTION_RESET.经过长时间的调查和许多红色鲱鱼,我开始从刀片文件中删除(不评论)随机部分的视图,并意识到,如果我
a)擦除{{Form}}表单中此部分内的2个调用
b){{-- 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>
--}}
Run Code Online (Sandbox Code Playgroud)
页面将呈现.我不确定这里到底是什么原因.上面和下面还有其他块,虽然这是一个3-div注释掉的部分,其他都没有.
有人知道造成这种情况的原因是什么?如果重要的话,在WAMP上运行.
Ton*_*rra 27
注意:这个答案是针对Laravel 4.2提供的,但仍然适用.有一些特殊情况的Blade编译问题依赖于Laravel和/或PHP的版本,因此最好只将Blade注释用于最简单的用例.
解决方案是仅使用Blade注释进行简单评论,或者注释掉单行Blade功能.不要在Blade注释中嵌入Blade/PHP代码.使用标准PHP块注释在单个注释(PHP,HTML,多个刀片功能等)中注释掉多行代码.
有效的刀片评论:
单刀功能:
{{-- Form::text('foo') --}}
Run Code Online (Sandbox Code Playgroud)
备注:
{{-- Form Section 1 --}}
Run Code Online (Sandbox Code Playgroud)
无效的刀片评论:
语法不正确:
{{-- Form::text('foo') -- }}
Run Code Online (Sandbox Code Playgroud)
"@"Blade内部评论
{{-- @Form::text('foo') --}}
Run Code Online (Sandbox Code Playgroud)
嵌套PHP:
{{-- <?php
echo "foo";
echo "bar
?> --}}
Run Code Online (Sandbox Code Playgroud)
嵌套刀片:
{{--
{{ HTML::form("foo") }};
{{ HTML::form("bar") }};
--}}
Run Code Online (Sandbox Code Playgroud)
请改用PHP块注释.它们仍然可以在blade.php文件中使用
<?php /*
{{ HTML::form("foo") }};
{{ HTML::form("bar") }};
*/ ?>
Run Code Online (Sandbox Code Playgroud)
或者,一次注释掉你的Blade一行:
{{-- HTML::form("foo") --}};
{{-- HTML::form("bar") --}};
Run Code Online (Sandbox Code Playgroud)
内幕:
对于OP的代码,Laravel的Blade Compiler将生成一个包含以下PHP/HTML的临时PHP文件:
<?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>
*/ ?>
Run Code Online (Sandbox Code Playgroud)
你的Blade评论中的Blade仍然被解析为PHP.PHP块注释中的PHP结束标记导致Apache的解析器提前结束,导致一些格式错误的PHP/HTML可能会导致连接崩溃(可能是由悬空引起的*/ ?>).
使用上述任何无效的Blade注释都会导致类似的编译问题.除了备注或评论刀片功能之外的任何其他内容,请避免使用Blade评论.
小智 5
Blade中的评论很简单!
{{-- Blade comments that wil not appear in the rendered HTML output --}}
Run Code Online (Sandbox Code Playgroud)
你可以做普通的 PHP 注释:
<? /* some comment here */
// or single line comments
# or these :)
?>
Run Code Online (Sandbox Code Playgroud)