Smarty html_options - PullRequest
       11

Smarty html_options

0 голосов
/ 24 марта 2010

Для функции smarty html_options есть ли способ избежать необходимости делать это (кроме использования smarty?)

{if $smarty.post}
    {html_options name=option_1 options=$options selected=$smarty.post.option_1}
{else}
    {html_options name=option_1 options=$options}
{/if}

Я понимаю, что это не будет отображаться в шаблоне, но кажется плохой практикой оставлять что-то, что не определено в шаблоне (это также заполняет мои журналы ошибок шумом о неопределенных индексах).

[править]

То, что я ищу, - это способ сделать это так, чтобы не отображались неопределенные ошибки индекса, а также уменьшить шумы в файлах шаблонов.

{html_options name=option_1 options=$options selected=$smarty.post.option_1}

Полагаю, это будет модифицированный плагин html_options?

[править]

Согласно идее @ mmcgrail:

{if isset($smarty.post.option_1)}
    {assign var=selected value=$smarty.post.option_1}
{else}
    {assign var=selected value=$default.option_1}
{/if}

{html_options name=option_1 options=$options selected=$selected}

Я нахожу это еще хуже, потому что он создает новые переменные в шаблоне, отклоняясь от предполагаемой цели smarty.

Я думаю, это работает:

или

<?php
    //[... snip ...]
    $option_1 = isset($_POST['option_1'])? $_POST['option_1'] : $default['option_1'];
    $template->assign('option_1', $option_1);
    $template->display('my_template.tpl');

А в шаблоне:

{html_options name=option_1 options=$options selected=$option_1}

Но тогда какой смысл разумно отслеживать все константы post / get / request / cookie / server /, если вы не можете использовать их в шаблоне, не удваивая объем кода, который вам нужно написать?

Ответы [ 2 ]

1 голос
/ 24 марта 2010

попробуйте

 {if isset($smarty.post)}
     {html_options name=option_1 optins=$options selected=$smarty.post.option_1}
 {/if}

Я думаю, что ответить на ваш вопрос

0 голосов
/ 25 марта 2010

Оказывается, что без написания отдельного плагина то, что я хочу, невозможно ... возможно, я сделаю это, что-то вроде:

{html_options name=option_1 options=$options selected=$default.option_1 post=option_1}
...