Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Условие для переменной,заданной в смарти.
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Условие для переменной,заданной в смарти.

Страниц (1): [1]
 

1. юрьич - 09 Февраля, 2017 - 15:43:34 - перейти к сообщению
Всем привет.В шаблоне задаю переменную.(из php никак не задать)
CODE (html):
скопировать код в буфер обмена
  1. {foreach key=tid item=item from=$recept}
  2.          {assign var="image" value="/images/dieta/recepts/small/recept{$item.id}.jpg"}
  3.  
  4. <li>{if $image}<img style="width:20px;float:left;margin-right:5px;" src="{$image}" />
  5.  
  6.         {/if}<a href="/dieta/{$login}/eat/{$item.id}.html">{$item.title}</a></li>
  7. {/if}
  8.     {/foreach}

Вот это условие {if $image} не работает. Как по другому можно?
2. andrewkard - 09 Февраля, 2017 - 16:00:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. {* проверка на существование *}
  3. {if isset($foo) }
  4.  ...
  5. {/if}
  6.  
3. юрьич - 09 Февраля, 2017 - 16:59:48 - перейти к сообщению
Это уже пробовал, не выходит.
4. andrewkard - 09 Февраля, 2017 - 17:16:02 - перейти к сообщению
Как то странно у Вас:

{foreach key=tid item=item from=$recept}
{assign var="image" value="/images/dieta/recepts/small/recept{$item.id}.jpg"}

<li>{if $image}<img style="width:20px;float:left;margin-right:5px;" src="{$image}" />

{/if}<a href="/dieta/{$login}/eat/{$item.id}.html">{$item.title}</a></li>
{/if}
{/foreach}
5. юрьич - 09 Февраля, 2017 - 18:05:54 - перейти к сообщению
Что именно? Если {/if} последняя, то это с другого условия захватилась.
6. teleoperator27 - 09 Февраля, 2017 - 18:48:56 - перейти к сообщению
юрьич пишет:
Что именно? Если {/if} последняя, то это с другого условия захватилась.
как страно у вас условия, начало до цикла, конец в внутри цикла.
7. юрьич - 09 Февраля, 2017 - 18:53:25 - перейти к сообщению
Я вообще не понимаю о чём речь. Что у меня ДО цикла?
CODE (html):
скопировать код в буфер обмена
  1. {foreach key=tid item=item from=$recept}
  2. {assign var="image" value="/images/dieta/recepts/small/recept{$item.id}.jpg"}
  3.  
  4. <li>{if $image}<img style="width:20px;float:left;margin-right:5px;" src="{$image}" />{/if}
  5. <a href="/dieta/{$login}/eat/{$item.id}.html">{$item.title}</a></li>
  6.  
  7. {/foreach}
8. teleoperator27 - 09 Февраля, 2017 - 19:26:53 - перейти к сообщению
юрьич пишет:
вообще не понимаю о чём речь.
Условия. В первом коде некорректно теги прописаны. То есть первый код заведом нерабочий был. Сейчас постом вижу поправили.

По делу, непонятна сама проверка.

CODE (htmlphp):
скопировать код в буфер обмена
  1. {assign var="image" value="/images/dieta/recepts/small/recept{$item.id}.jpg"}

То есть, длявсего, что идет после этой строчки:
1. Переменная $image существует (вы ее только что создали)
2. Переменная $image не пустая (вы в нее занесли строку - путь до картинки)

Вот и возникает вопрос, на что проверка? У вас
CODE (htmlphp):
скопировать код в буфер обмена
  1. {if $image}
- если переменная $image существет, то... // она у вас существует в любом случае, п.1
На empty() тоже проверять глупо, она не пуста - п.2

Выходит, проверку вам надо делать при создании переменной, типа
CODE (htmlphp):
скопировать код в буфер обмена
  1. {if $item.id}
  2. {assign var="image" value="/images/dieta/recepts/small/recept{$item.id}.jpg"}
  3. {/if}


что то типа такого
9. юрьич - 09 Февраля, 2017 - 19:51:20 - перейти к сообщению
Суть понятна.Согласен.Но и дело в том, что $item.id в цикле тоже есть всегда, пока есть проход.Нужна проверка именно картинки. В smarty нашёл такую конструкцию
CODE (html):
скопировать код в буфер обмена
  1. {html_image file='/path/from/docroot/pumpkin.jpg'}

Может её как то использовать можно? Мне больше на ум ничего не приходит.
10. teleoperator27 - 09 Февраля, 2017 - 20:08:30 - перейти к сообщению
Ну сделай тупо через {php} что типа

CODE (htmlphp):
скопировать код в буфер обмена
  1. {foreach key=tid item=item from=$recept}
  2.  
  3. {assign var="image" value="/images/dieta/recepts/small/recept{$item.id}.jpg"}
  4.  
  5. <li>{php}if($image)<img style="width:20px;float:left;margin-right:5px;" src="{$image}" />{/php}
  6.  
  7. <a href="/dieta/{$login}/eat/{$item.id}.html">{$item.title}</a></li>
  8.  
  9. {/foreach}
или писать плагин Улыбка
11. юрьич - 09 Февраля, 2017 - 20:14:47 - перейти к сообщению
В smarty больше не работает тег {php}. Буду наверное jquery использовать.
12. Sail - 10 Февраля, 2017 - 08:34:00 - перейти к сообщению
юрьич, в 2006-м году предлагали такую конструкцию:
CODE (htmlphp):
скопировать код в буфер обмена
  1. {fetch file="http://www.bilder.testdomain.de/farben/{$variationen.farbnum[$key]}.gif" assign="image"}
  2. {if $image ne ""}
  3.     {$image}<br>
  4.     yes
  5. {else}
  6.     no
  7. {/if}  

Ну, и немного про {fetch}
13. юрьич - 10 Февраля, 2017 - 12:30:18 - перейти к сообщению
Sail, спасибо за инфу, но не сработало. Выдало вместо файла
CODE (html):
скопировать код в буфер обмена
  1. &#65533;&#65533;&#65533;&#65533;JFIF&#65533;&#65533;;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 95 &#65533;&#65533;C     &#65533;&#65533;C  &#65533;&#65533;dd"&#65533;&#65533; &#65533;&#65533;&#65533;&#65533; =&#65533;&#65533;|&#65533;[3he~&#65533;~&#65533;&#65533;&#65533;f&#65533;&#65533;f&#1698;f7&#65533;&#65533;y~&#65533;&#65533;}&#65533;FQ3S &#65533;&#65533;!)o&#65533;:&#65533;&#65533;ZX&#65533;3*r&#65533;&#65533;S &#65533;&&#65533;p&#1676;&#65533;T&#65533;#L&#65533;,&#65533;&#65533;S&#65533;2e&#65533;tsgl&#65533;&#65533;....
14. Sail - 10 Февраля, 2017 - 12:54:43 - перейти к сообщению
юрьич, файл и выдало.
А теперь разовьем...
Формируете имя файла. "Фетчите" файл по имени в переменную... проверяете переменную...
И либо используете сформированное имя, либо не используете...
15. юрьич - 10 Февраля, 2017 - 15:36:38 - перейти к сообщению
Sail пишет:
Формируете имя файла. "Фетчите" файл по имени в переменную... проверяете переменную...

Разве это не формирует имя файла?
CODE (html):
скопировать код в буфер обмена
  1. {fetch file="http://www.bilder.testdomain.de/farben/{$variationen.farbnum[$key]}.gif" assign="image"}

Если нет,то не понимаю.

 

Powered by ExBB FM 1.0 RC1