Cakephp - 在 if 内显示列表元素

Cakephp - Display list element inside if

我目前正在使用 cakephp 显示一个列表,但我一直无法通过单击特定的元素组件来重定向,该组件在某些情况下必须消失,这就是我所拥有的:

<li><a href="<?php echo $this->Url->build(["controller" => "pages","action" => "index"]);?>">Top 20</a>
<?php  
$a = true;
  if($a){ 
    $prod_pm= '<li><a href="<?= $this->Url->build(["controller" => "Catalogo","action" => "cat",11229])? 
    >">Promotions</a>'; 
  }else{
    $prod_pm = '';
}?>  
<?= $prod_pm ?> 
<li><a href="<?= $this->Url->build(["controller" => "Catalogo","action" => "cat",11050]) ?>"></a>

似乎在 href 引用之后重定向的 php 不是那样工作的,我也尝试用外部代码声明一个变量并插入 $this->Url->build(["controller" => "Catalogo","action" => "cat",11229]) 但没有用。

在此先感谢您的任何提示或帮助。

您似乎只是在 href 属性中插入一个字符串。

尝试:

$prod_pm = '<li><a href="'.$this->Url->build(["controller" => "Catalogo","action" => "cat",11229]).'">Promotions</a>';

您正在尝试从字符串常量内部调用 PHP 代码。 <?= 只是作为字符串的一部分。有什么理由需要 $prod_pm 变量吗?似乎你让自己变得比需要的更难:

<li>...
<?php  
$a = true;
if ($a):
?>
<li><a href="<?= $this->Url->build(['controller' => 'Catalogo', 'action' => 'cat', 11229]) ?>">Promotions</a>
<?php
endif;
?>
<li>...

或者,等价地,

<li>...
<?php  
$a = true;
if ($a) {
    echo $this->Html->tag('li',
        $this->Html->link('Promotions', ['controller' => 'Catalogo', 'action' => 'cat', 11229])
    );
}
?>
<li>...