PHP:如何隐藏/显示HTML的块

8

我希望有人能够帮助解决这个非常新手的问题。我刚从一个ASP.Net环境过来,那里很容易隐藏或显示HTML块。例如:根据用户输入不同的表单阶段。

在PHP中隐藏或显示

/非常简单,但我想到的唯一方法是将我的HTML放入echo语句中。这使得HTML非常难以阅读、难以维护,整个文件看起来非常凌乱。

我相信一定有更好的方法可以隐藏或显示HTML块,而不必涉及echo语句,但我找不到任何在线文档来解释如何做。

感谢任何提示、建议或链接到解决这个问题的好PHP资源。


1
哇,自从我问了这个问题以来,我已经走了很长的路 X-) - Chuck Le Butt
4个回答

20

考虑将PHP作为嵌入式语言时,为了获得更好的可读性,应使用特定于"模板"的语言形式。

与其使用echo,不如直接在<?php ?>标记外编写HTML(永远不要使用可能会误导的<? ?>)。

此外,建议使用if () :而不是if () {,例如:

<body>
    <?php if (true) : ?>
        <p>It is true</p>
    <?php endif; ?>
</body>

参考资料:


我从来没有见过这样的东西,非常好。 - Nik
1
我刚刚读了参考链接。我发现备用语法并不是必需的,但对于可读性很有用。我想我会这样做,谢谢! - Chuck Le Butt
1
我认为 if():if(){ 这两种语法是个人偏好的问题。我个人觉得花括号的表示法更易读,而且我的 IDE 也很好地为我突出显示了它。 - scunliffe
1
@scunliffe,通过大量的代码找到“}”所指的内容非常困难,而“endforeach;”则完全解释了这一点。 - Shoe
1
再次强调,这是个人偏好问题。;-) 我也觉得 endifendforeachendwhile 等等提醒我可怕的结尾括号注释习惯,比如:}//end if。如果我将 foreach 改为 while,我不需要编辑我的关闭语法以匹配。 - scunliffe

7
你不需要将HTML放在一个echo语句中。把HTML隐式地看作是被echo的。所以,如果要有条件地显示一块HTML,你需要使用如下结构:
<?php
    if (condition == true) {
?>
    <div>
        <p>Some content</p>
    </div>
<?php
    }
?>

因此,在 PHP 标签之外存在的 HTML 字符串文字只是隐式地传递到页面上,但您可以围绕它包装逻辑来驱动它。在上面的示例中,div 及其内容都在 if 语句的范围内,因此该 HTML 块(即使它在 PHP 标签之外)仅在 PHP 代码中的条件为 true 时才被传递。


@Django,为了更好的可读性,你应该使用替代语法,请阅读我的答案。 - Shoe
@Charliepiga:同意。我的语法有点“爆炸”,是为了展示每个结构。组织代码总有不同且通常更好的方法。 - David

3

试试这个:

<?php if ($var == true) { ?>
    <table>...</table>
<?php } ?>

您可以使用像包裹在HTML周围的PHP标签,根据条件,HTML将被呈现或不呈现。

谢谢你的回答,但是我认为你的代码有问题。第三行应该写成 <?php } ?>,对吧? - Chuck Le Butt

0

这也应该可以工作。例如,用于隐藏/显示表格标记。

<table <?php echo (condition == true)?'visible':'hidden'; ?> ></table>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接