Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “之前的Laravel叶片评论”@如果;_Php_Html_Laravel_Blade - Fatal编程技术网

Php “之前的Laravel叶片评论”@如果;

Php “之前的Laravel叶片评论”@如果;,php,html,laravel,blade,Php,Html,Laravel,Blade,有时,在HTML中,我需要避免添加额外的空白,但我还需要添加“@if()”块。为了实现这一点,我采取了以下方法: some text{-- --}@if($someCondition){-- --}more text with no space between @endif 这种方法一直很有效。但是,在将我的开发和实时环境升级到Laravel 5.5(从Laravel 5.2)后,开发环境工作正常,但实时环境将上述刀片渲染为以下HTML: some text@if($someCondit

有时,在HTML中,我需要避免添加额外的空白,但我还需要添加“@if()”块。为了实现这一点,我采取了以下方法:

some text{--

--}@if($someCondition){--

--}more text with no space between

@endif
这种方法一直很有效。但是,在将我的开发和实时环境升级到Laravel 5.5(从Laravel 5.2)后,开发环境工作正常,但实时环境将上述刀片渲染为以下HTML:

some text@if($someCondition)more text with no space between

<?php endif; ?>
一些text@if($someCondition)更多文本之间没有空格
。。。因此,刀片注释后面的“if”语句将保留为纯文本

我知道这是可能的,因为我的两个开发环境都正确地呈现了页面。我查看了PHP版本并复制了整个代码目录,但我根本找不到它们之间的任何差异,更不用说会导致不同处理的差异了

有没有任何理由可以解释为什么Laravel的刀片引擎不允许在刀片评论之后加上“@”

使用PHP7.029,Laravel 5.5,CentOS。

解决原始问题的另一种方法是直接为if语句编写一些PHP代码:

some text<?php

if($someCondition):

?>more text with no space between<?php
endif;
?>
一些文本之间没有空格的更多文本
(但是,我同意这不是编写模板的最费力的方式,因为您将在Blade和PHP之间混合使用)


Laravel将刀片模板转换为PHP,然后使用这些转换后的文件进行渲染。因此,如果您直接使用刀片模板编写一些PHP代码,它的工作原理也一样。

可以始终使用刀片原生PHP附件

some text{{ if(condition) {do something} }}more text

这就为HTML提供了内联php的灵活性。

我发现了这个问题。视图缓存在开发环境中,这就是它工作的原因

看起来Laravel在5.3和5.5之间引入了一个新的bug。在分析刀片的其余部分之前,将删除刀片注释,这可能会导致问题,正如我在这里的问题中所示。这是以前在Laravel 5.2中的工作

我确实找到了一份工作:

some text{{null

}}@if($someCondition){--

--}more text with no space between

@endif
产生一些有用的东西:

some text<?php echo e(null); ?><?php if($someCondition): ?>more text with no space between

<?php endif; ?>
一些文本之间没有空格的更多文本