как сделать условие в magento? - PullRequest
3 голосов
/ 19 марта 2012

есть такой код:

    <div class="test">
        <div class="upsell-tags"> 
     <?php echo $this->getChildHtml('product_additional_data') ?>
     <?php echo $this->getChildHtml('upsell_products') ?>
        </div>
    </div>

Я хочу добавить условие if перед <div class="test">.Как мне это сделать?благодарю вас.Когда я добавляю следующий код, он показывает мне ошибку.почему?

<?php if(isset($this->getChildHtml('upsell_products'))):?>.....


    <?php endif;?>

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Из документации PHP:

Предупреждение

isset () работает только с переменными, поскольку передача чего-либо еще приведет к ошибке разбора.Для проверки, установлены ли константы, используйте функцию define ().

Вы передаете возвращаемое значение функции, которое недопустимо.Вам нужно будет сделать что-то вроде

$upsell = $this->getChildHtml('upsell_products');
if($upsell) {
    // ...
}
2 голосов
/ 19 марта 2012

Если вы посмотрите на код magento, функция getChildHtml вернет строку.

/**
 * Retrieve child block HTML
 *
 * @param   string $name
 * @param   boolean $useCache
 * @param   boolean $sorted
 * @return  string
 */
public function getChildHtml($name = '', $useCache = true, $sorted = false)

Если вы посмотрите немного больше, кажется, что функция возвращает пустую строку, если нечего визуализировать.Так что я бы просто отобразил возвращенный HTML без каких-либо условий.Если вам действительно нужно знать, есть ли что-то, я бы сделал: if ($ this-> getChildHtml ($ name)! = '')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...