我在prestashop做了一个小模块。我已经拿了一个数据库 (ps_customer_module)像这样
id image_id customer_name
1 2 john
2 23 simon
3 45 doe
4 9 rocky
现在我从模块
获取这样的总数据库$get_users = 'SELECT * FROM '._DB_PREFIX_.'customer_module;
$users = Db::getInstance()->ExecuteS( $get_users );
这时我正在做print_r($ users)。我得到了这样的结果
Array
(
[0] => Array
(
[id] => 1
[image_id] => 2
[customer_name] => john
)
[1] => Array
(
[id] => 2
[image_id] => 23
[customer_name] => simon
)
[2] => Array
(
[id] => 3
[image_id] => 45
[customer_name] => doe
)
[3] => Array
(
[id] => 4
[image_id] => 9
[customer_name] => rocky
)
)
现在我已将数组分配给智能模板,如此
$this->context->smarty->assign( 'users', $users );
我在这个带有foreach循环的列表中显示所有结果
<ul>
{foreach from=$users item=row}
<li>
<h3>{$row.customer_name}</h3>
<img src="img/{$row.image_id}/{$row.image_id}.jpg" alt="">
</li>
{/foreach}
</ul>
上面的方法与单个image_id数字图像一起正常工作。让我们说一下image_id 1所以它的工作正常。但是如果图像id是45那么它就像
那样<img src="img/45/45.jpg" alt="">
但实际的图像目录是这样的
<img src="img/4/5/45.jpg" alt="">
所以有人可以告诉我如何在有一个带有两个数字的image_id并将它们用/(斜杠)分开时爆炸image_id。 希望你明白我的观点。任何帮助都会非常明显。感谢
答案 0 :(得分:0)
您需要使用PHP函数str_split
和implode
作为修饰符(如果需要,您当然可以在PHP中执行相同操作)。我已经为此创建了示例脚本。
PHP文件:
$users = Array
(
0 => Array
(
'image_id' => 2
),
1 => Array
(
'image_id' => 45
),
2 => Array
(
'image_id' => 101
),
3 => Array
(
'image_id' => 2012
),
);
$smarty->assign('users',$users);
Smarty模板:
{foreach from=$users item=row}
img/{$row.image_id|str_split|implode:'/'}/{$row.image_id}.jpg<br />
{/foreach}
输出:
img/2/2.jpg
img/4/5/45.jpg
img/1/0/1/101.jpg
img/2/0/1/2/2012.jpg
PS。您应该在不使用var_dump
但使用var_export
的问题中提供PHP数据,以便可以轻松粘贴而无需修改。