主にview::make
in Laravelを含むフォームであるページをレンダリングしていますが、クラッシュして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>
--}}
ページがレンダリングされます。ここでの正確な原因はわかりません。上下に他のブロックがありますが、これは3-divのコメントアウトされたセクションで、他のブロックはありません。
誰がこれを引き起こしているのか手がかりがありますか?それが重要な場合は、WAMPで実行します。
注:この回答はLaravel 4.2に対して与えられましたが、まだ適用されるはずです。 Laravelおよび/またはPHPのバージョンに依存するBladeコンパイルの問題の特別なケースがいくつかあります。そのため、最も単純なユースケースにはBladeコメントのみを使用するのが最善です。
解決策は、簡単なコメントにのみBladeコメントを使用するか、単一行のBlade関数をコメントアウトすることです。 Bladeコメント内にBlade/PHPコードをネストしないでください。標準のPHPブロックコメントを使用して、1つのコメント内で複数行のコードをコメントアウトします(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") }};
*/ ?>
または、ブレードを一度に1行コメントアウトします:
{{-- HTML::form("foo") --}};
{{-- HTML::form("bar") --}};
内部:
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>
*/ ?>
Bladeコメント内のBladeは、まだPHPに解析されています。 PHPブロックコメント内のPHP終了タグにより、Apacheのパーサーが早期に終了し、接続がクラッシュする可能性のある不正な形式のPHP/HTMLが発生します(ぶら下がり*/ ?>
)。
前述の無効なBladeコメントを使用すると、同様のコンパイルの問題が発生します。注釈またはBlade関数のコメント以外は、Bladeのコメントを一度に1行ずつ避けてください。
laravel 5.1とPHP 7(新しいHomestead)で同じ問題があります。回避策はこれを使用することでした。
<?php /* XXX */?>
これの代わりに:
{{-- XXX -- }}.
私が試しました
ネストされたPHP:
{{-- <?php
echo "foo";
echo "bar";
?> --}}
しゅう
使用中。コンテンツをコメント化せず、[〜#〜] html [〜#〜]としてコンパイルできません。
これはhtmlsource {{-- foobar --}}
私が持っているもの
Blade内のphpコードにコメントする場合
これを試して
<!-- @php echo 'hai'; @endphp -->
OR
<!-- <?php echo 'hai'; ?> -->
そして、ページのソースを表示してみてください
同様の症状があり、コメントの長さだけに関係しているようです。 PHPコードまたはブレードステートメントがまったく含まれていないコメントでテストしました。
_{{--
0123456789abcdef
0123456789abcdef
0123456789abcdef
--}}
_
クラッシュするまで繰り返し行のコピーを追加し続けました。コメントには字句的にブレード_@if
_ステートメントが続き、対応する<php if(...): ?>
はコンパイルされたテンプレートになりませんでしたただし、閉じている_<?php endif; ?>
_がした 、構文的に無効なコンパイル済みテンプレートになります。
これはブレードコンパイラのバグのようで、報告します。
回避策は、長いブレードコメントを-}} {{-で分割することです。
私の場合、このようなブレードのコメントが問題でした:
{{--
@if ($test)
<div>something</div>
@else
<div>something else</div>
@endif
--}}