Вложенный цикл в шаблонизаторе Smarty

607
07 февраля 2017, 22:59

Имеется следующий нетривиальный PHP-код:

$req = DB::run("SELECT * FROM `license` WHERE `id_user`='" . $this->user['id'] . "' ORDER BY `id` DESC LIMIT " . $this->page . ", " . $this->message);
while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
    $arrayrow[] = $row;
    $reqs = DB::run("SELECT * FROM `cms_php` WHERE `cms`='" . $row['cms'] . "' ORDER BY `id` ASC");
    while ($rows = $reqs->fetch(PDO::FETCH_ASSOC)) {
        $arrayrows[] = $rows;
    }
}

В шаблон передаю так:

SmartySingleton::instance()->assign(array(
    'arrayrow' => $arrayrow,
    'arrayrows' => $arrayrows
));

В шаблоне вывожу вот так:

{foreach $arrayrow as $row}
    <tr>
        <td>{$row.namecms|esc}</td>
        <td>{$row.code}</td>
        <td>{if $row.activation == 1}активирована{else}не активирована{/if}</td>
        <td>
            {if $row.price == 0}  
                {foreach $arrayrows as $rows}
                    {if $row.cms == $rows.cms}
                        <span><a href="{$home}/load/{$row.cms}/{$rows.id}">{$rows.name|esc}</a></span>
                        {/if}
                    {/foreach}
                {else}
                    {foreach $arrayrows as $rows}        
                        {if $row.cms == $rows.cms}
                        <span><a href="{$home}/profile/load/{$row.id}/{$rows.id}">{$rows.name|esc}</a></span>
                        {/if}
                    {/foreach}
                {/if}
        </td>
    </tr>
{/foreach}

Что не правильно: т.е. значения повторяются?

Как правильно вывести в шаблоне?

Answer 1

Самый простой способ сделать вот так:

{foreach array_slice($arrayrows, 0, ЧИСЛО) as $rows}
    <span><a href="{$home}/load/{$row.cms}/{$rows.id}">{$rows.name|esc}</‌​a></span>
{/foreach}
READ ALSO
Пересобрать массив PHP

Пересобрать массив PHP

Всем привет! Есть массив foreach($products as $ val) {}:

722
PHP определение кодировки

PHP определение кодировки

Есть скрипт что пытается определить кодировку и сменить на WINDOWS-1251Вот основной кусок:

650
Ajax игнорирует файл

Ajax игнорирует файл

Проект на LaravelЕсть форма с загрузкой файла

494