1

我在 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 并用 / (斜杠)将它们分开。希望你明白我的意思。任何帮助都会非常显着。谢谢

4

1 回答 1

0

您需要使用 PHP 函数str_splitimplodeas 修饰符(如果您愿意,当然可以在 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);

智能模板:

{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您应该在未使用但使用的问题中提供您的 PHP 数据,var_export以便它们可以轻松粘贴而无需修改。

于 2014-08-18T10:30:48.830 回答