В чем отличие? Есть решение

Подскажите, пожалуйста, в чем принципиальное отличие данных конструкций и корректно ли использовать второй вариант?

{$promocards = $wa->shop->promos()} 
{foreach $promocards as $promo}
  ...
{/foreach}
{foreach $wa->shop->promos() as $promo}
  ...
{/foreach}

Заранее спасибо за ответ!

2 ответа

  • 2
    BNP (Дмитрий) 24 мая 2018 16:32 # Решение

    Во втором варианте возможен вариант, что

    $wa->shop->promos()

    вернет пустой массив (т.е. промокарточек нет) и тогда будут сыпаться нотисы. Я бы и первый поправил:

    {$promocards = $wa->shop->promos()} 
    {if $promocards}
    {foreach $promocards as $promo}
    ...
    {/foreach} {/if}


    • +1
      EnsoStudio EnsoStudio 27 мая 2018 04:12 #
      (array)$wa->shop->promos()

      решает проблему.

      ну или так

      {if $promocards = $wa->shop->promos()}


  • 2
    Николай Иванов 24 мая 2018 16:32 # Решение
    Просто оптимизация.
    В первом случае используется доп.переменная, которая может использоваться в коде многократно, без еще одного вызова $wa->shop->promos, если этот массив вдруг понадобится еще где-то в шаблоне.


Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите