-4

需要php帮助

我需要在 html 标记内添加 if 语句

if( get_field($image) ):
    ?><img src="<?php the_field($image); ?>" alt="" /><?php
endif;

我想在下面的 html 标记中添加 if 语句来代替 img 和 a,这可能吗?

 echo 

    "<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\">  

 // I want this if statement to work inside here...how do i escape the html to make it work?

if( get_field($image) ):
        ?><img src="<?php the_field($image); ?>" alt="" /><?php
    endif;


    <img src=\"" .get_field($image)."\" alt=\"\" /> 
     <a href=\"".get_field($download). "\"> Download File</a> 

    </$html>\n";
4

1 回答 1

2

将 PHP 运算符放入 HTML

首先,不要使用该echo语句来吐出大量 HTML,这会使代码很难维护和重用。这不是更容易吗?

<a href='<?php echo $some_variable; ?>'>

在 HTML 块中使用 PHP 逻辑(一般)

你正在寻找这样的东西:

<?php if(!empty($image)): ?>
    <img src='<?php echo $image; ?>' alt='Some Stuff'>
<?php endif; ?>

这是一种称为三元运算符的简写等价物,在代码中可能更容易阅读:

<?php echo empty($image) ? null : "<img src='$image' alt='Some Stuff'>"; ?>

如果有一个值,这将回显一个图像标签,如果$image没有,则什么都没有。

让我们清理并修复原始帖子中的代码...

您的代码看起来像是被故意混淆以混淆人们。学会缩进,不要在逻辑中嵌入逻辑。优先考虑可读性,您的代码将更容易维护。

if(!empty($text)) 
        echo 

"<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\">  

<img src=\"" .get_field($image)."\" alt=\"\" />  " .get_field($text)." 
<a href=\"".get_field($download). "\"> Download File</a> 

</$html>\n";

这里有很多可以改进的地方。首先,尽可能将业务逻辑与显示逻辑分开:

商业逻辑

<?php
    // This should be in another FILE ideally...
    $this->divClass = empty($this->options['class']) ? null : trim($thesis->api->esc($this->options['class']));
    $this->image    = the_field($image);
    $this->download = the_field($download);
    $this->text     = // I dont know how you're setting this.
?>

显示逻辑

接下来,丢失get_field函数,如果找不到,则添加null返回,这样您的代码就会更清晰。the_field然后,只需使用这样的东西:

<?php if(!isset($this->text)): ?>
    <div class='<?php echo $divClass; ?>'>
    <?php if(!isset($this->image) && !isset($this->download)): ?>
        <img src='<?php echo $this->image; ?>'>
        <a href='<?php echo $this->download; ?>'>Download File</a>
    <?php endif; ?>
    </div>
<?php endif; ?>

这些<?php>标签可以帮助您,它们允许您以大多数语言不得不求助于丑陋的外部模板的方式将 PHP 代码干净地插入 HTML 代码。使用它们,保持代码可读性和可理解性,不要走捷径,因为它们会回来咬你。

于 2013-08-14T08:20:33.713 回答