如何在Smarty / Prestashop中循环数组?

问题描述 投票:0回答:2

我在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测试人员在线工作。它看起来非常简单,但我无法解决它。

php prestashop smarty
2个回答
0
投票

我想你想要的是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
投票

看来你正在使用Smarty作为模板引擎。所以你可以做这样的事情(来自the doc)。

在控制器中

//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}
© www.soinside.com 2019 - 2024. All rights reserved.