如何在Smarty / Prestashop中遍历数组?

时间:2019-03-14 14:32:47

标签: php prestashop smarty

我在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 :(得分: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}

答案 1 :(得分: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);