Как перебрать массив в Smarty / Prestashop? - PullRequest
0 голосов
/ 14 марта 2019

Я использую этот код в Prestashop

{if (strpos($product.name, 'TVNUMBER1') !== false)}
    THIS PRODUCT IS IN SALE
{/if}

Поэтому, когда я хочу показать, что определенные продукты продаются, я должен идти построчно, указывая один и тот же продукт, то есть "TVNUMBER1". Я хочу иметь возможность написать массив , детализирующий все продукты, которые я имею в продаже "TV1, TV2, TV3", и получить код, подобный этому:

{if (strpos($product.name, '$array') !== false)}
    THIS PRODUCT IS IN SALE
{/if}

У меня естьпопробовал похожие примеры, найденные здесь, но я не могу заставить их работать ни в Prestashop, ни в PHP-тестерах онлайн.Это выглядит очень просто, но я не могу обойти это.

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Я думаю, что вам нужна функция in_array php, которая проверяет, находится ли указанная $ needle в массиве.

Итак, что вы должны сделать, это:

{if (in_array($product.name, '$array') !== false)}
    THIS PRODUCT IS IN SALE
{/if}

Затем в вашем контроллере вы можете назначить массив smarty:

$arr = array('TVNUMBER1', 'TVNUMBER2', 'TVNUMBER3');
$smarty->assign('myArray', $arr);
0 голосов
/ 14 марта 2019

Кажется, вы используете Smarty в качестве движка шаблонов.Таким образом, вы можете сделать что-то вроде этого (из документа ).

В контроллере

//Give it to the view
$arr = array('TVNUMBER1', 'TVNUMBER2');
$smarty->assign('myArray', $arr);

И в представлении

//In the view, loop over the array
{foreach from=$myArray item=productName}
    //If your product is among the in-sale ones, show the message
    {if (strpos($product.name, productName) !== false)}
        THIS PRODUCT IS IN SALE
    {/if}
{/foreach}
...