Laravel -刀片评论,刀片渲染导致页面崩溃

zfycwa2u  于 2023-02-25  发布在  其他
关注(0)|答案(8)|浏览(125)

我在Laravel中使用view::make渲染一个页面,该页面主要是一个表单,它正在崩溃,导致ERR_CONNECTION_RESET。经过长时间的调查和许多转移注意力的操作,我开始从视图的blade文件中删除(而不是注解)随机部分,并意识到如果我
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>
    --}}

页面将呈现。2我不确定到底是什么原因。3上面和下面还有其他的块,虽然这是一个3-div注解掉的部分,其他的都没有。
有人知道是什么原因吗?如果有问题的话,在WAMP上运行。

hfsqlsce

hfsqlsce1#

Blade注解应仅用于简单注解或注解掉单行Blade函数。单个Blade注解不能用于注解掉多行代码。

使用PHP块注解。它们在blade.php文件中仍然可用

<?php /* 
{{ HTML::form("foo") }};
{{ HTML::form("bar") }};
*/ ?>

或者,一次注解掉Blade的一行:

{{-- HTML::form("foo") --}};
{{-- HTML::form("bar") --}};

有效刀片式服务器注解示例:

  • 单铲刀功能:*
{{-- Form::text('foo') --}}
  • 备注:*
{{-- Form Section 1 --}}

无效Blade注解示例:

  • 语法错误:*
{{-- Form::text('foo') --  }}
  • "@”位于Blade注解内 *
{{-- @Form::text('foo') --}}
  • 嵌套PHP:*
{{-- <?php 
echo "foo";
echo "bar
?> --}}
  • 嵌套刀片式服务器:*
{{-- 
{{ HTML::form("foo") }};
{{ HTML::form("bar") }};
--}}

内部构件:

使用问题中的示例代码,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结束标记可能会导致编译问题:
?> breaks out of PHP mode and returns to HTML mode, and // or # cannot influence that.

sy5wg1nm

sy5wg1nm2#

Blade中的评论很简单!

{{-- Blade comments that wil not appear in the rendered HTML output --}}

您可以使用普通的PHP注解:

<? /* some comment here */
// or single line comments
# or these :)
?>
f87krz0w

f87krz0w3#

我有同样的问题与laravel 5.1和php7(新家园)。周围的工作是使用这个:

<?php /* XXX */?>

而不是这样:

{{-- XXX -- }}.
ygya80vv

ygya80vv4#

我也有过类似的症状,似乎与注解的长度有关。我用一个完全不包含任何PHP代码或blade语句的注解进行了测试:

{{--
0123456789abcdef
0123456789abcdef
0123456789abcdef
--}}

我不断地添加重复行的副本,直到它崩溃。注解后面是一个blade @if语句,对应的<php if(...): ?>没有出现在编译后的模板中,但是结束的<?php endif; ?>出现了,导致了语法上无效的编译后的模板。
这似乎是一个错误的刀片编译器,我会报告它。
解决方法是使用--}}{{--拆分长的刀片注解。

zsohkypk

zsohkypk5#

我试过了
嵌套PHP:

{{-- <?php 
echo "foo";
echo "bar";
?> --}}

@托尼阿拉
使用时。它不会注解内容,并阻止编译为HTML
这是html{{-- foobar --}}的源代码
我已经得到了
那是因为如果你想评论刀片内的php代码
试试这个

<!-- @php echo 'hai'; @endphp -->

<!-- <?php echo 'hai'; ?> -->

并尝试查看页面源代码

cidc1ykv

cidc1ykv6#

像这样的刀锋评论,是我的问题所在:

{{--    
    @if ($test)
        <div>something</div>
    @else
        <div>something else</div>
    @endif
--}}
oprakyz7

oprakyz77#

简单地说,我们必须使用一个双花括号后面跟一个双连字符。这将适用于单行和多行。{{-- --}}

mw3dktmi

mw3dktmi8#

刀片备注

{{-- This comment will not be present in the rendered HTML --}}

参考:https://laravel-news.com/laravel-blade-comments

相关问题