我正在呈现一个页面,这个页面主要是在Laravel中使用view::make的表单,它崩溃了,导致了ERR_CONNECTION_RESET。经过长时间的调查和许多转移注意力的问题,我开始从刀片文件中删除(而不是注释)用于视图的随机部分,并意识到如果我
a)删除表单这一部分内的2个{{Form}}调用
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>
--}}页面将呈现。我不确定这里到底是什么原因。上面和下面还有其他的块,尽管这是一个3-div注释掉的部分,其他的都不是。
有没有人知道这是什么原因?在WAMP上运行,如果这很重要的话。
发布于 2015-01-31 03:55:38
注意:这个答案是针对Laravel 4.2给出的,但仍然适用。有一些Blade编译问题的特殊情况取决于Laravel和/或PHP的版本,所以最好只在最简单的用例中使用Blade注释。
解决方案是只对简单的备注使用刀片注释,或者注释掉单行刀片函数。不要在Blade注释中嵌套Blade/PHP代码。使用标准的PHP块注释可以注释掉单个注释中的多行代码(PHP、HTML、多个刀片函数等)。
有效刀片式服务器注释:
单刀片功能:
{{-- Form::text('foo') --}}备注:
{{-- Form Section 1 --}}无效的刀片注释:
语法不正确:
{{-- Form::text('foo') -- }} 刀片注释中的"@“
{{-- @Form::text('foo') --}} 嵌套PHP:
{{-- <?php
echo "foo";
echo "bar
?> --}} 嵌套刀片:
{{--
{{ HTML::form("foo") }};
{{ HTML::form("bar") }};
--}} 改为使用PHP块注释。它们仍然可以在blade.php文件中使用
<?php /*
{{ HTML::form("foo") }};
{{ HTML::form("bar") }};
*/ ?> 或者,一次注释掉的一行:
{{-- 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 block-comment内的PHP end标记会导致Apache的解析器提前结束,导致一些格式错误的PHP/HTML可能会使您的连接崩溃(可能是由悬空的*/ ?>引起的)。
?> breaks out of PHP mode and returns to HTML mode, and // or # cannot influence that.
使用上述任何无效的Blade注释都会导致类似的编译问题。避免对除注释或注释Blade函数之外的任何内容进行Blade注释,一次删除一行。
发布于 2020-02-04 14:11:28
Blade中的评论非常简单!
{{-- Blade comments that wil not appear in the rendered HTML output --}}你可以做普通的PHP注释:
<? /* some comment here */
// or single line comments
# or these :)
?>发布于 2016-01-04 23:32:01
我也有类似的症状,似乎只与评论的长度有关。我用一个根本不包含任何PHP代码或blade语句的注释对其进行了测试:
{{--
0123456789abcdef
0123456789abcdef
0123456789abcdef
--}}我不断添加重复行的副本,直到它崩溃。注释后面紧跟一个<?php endif; ?> @if语句,相应的<php if(...): ?>没有出现在编译后的模板中,但结尾的 blade 出现了,导致编译后的模板在语法上无效。
这似乎是刀片编译器中的一个错误,我将报告它。
解决方法是使用--}}{{-- ]拆分长刀片注释。
https://stackoverflow.com/questions/27830200
复制相似问题