Pour la fonction html_options de smarty, existe-t-il un moyen d'éviter cela (autre que de ne pas utiliser smarty)?Smarty html_options
{if $smarty.post}
{html_options name=option_1 options=$options selected=$smarty.post.option_1}
{else}
{html_options name=option_1 options=$options}
{/if}
Je me rends compte que ce ne sera pas affiché dans le modèle, mais il semble comme une mauvaise pratique de laisser quelque chose qui n'est pas défini dans le modèle (il remplit également mes journaux d'erreur avec le bruit sur les index non définies).
[modifier]
Ce que je cherche est une façon de le faire comme ça, sans avoir les erreurs d'index non définis apparaissent, ainsi que la réduction du bruit Smarty dans les fichiers de modèle.
{html_options name=option_1 options=$options selected=$smarty.post.option_1}
Je suppose que ce serait probablement un plugin html_options modifié?
[modifier]
Selon l'idée de @ 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}
Je trouve cela encore pire, car il crée de nouvelles variables dans le modèle, s'écarter de l'objectif supposé de Smarty.
Je suppose que cela fonctionne:
ou:
<?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');
Et dans le modèle:
{html_options name=option_1 options=$options selected=$option_1}
Mais alors quel est le point de Smarty garder une trace de tous les post/get/request/cookie/server/constants si vous ne pouvez pas les utiliser dans le modèle sans doubler la quantité de code que vous avez à écrire?
Quelles sont les erreurs que vous éliminez lorsque vous mettez une ligne int? – mcgrailm
Lorsque la variable post est vide, j'obtiens "AVIS: Undefined index: option_1" Je me rends compte que ce n'est pas une horrible erreur horrible, mais il semble négligent de le laisser là. – SeanJA
Un autre problème est que l'avis apparaît caché dans la boîte de sélection si vous inspectez le code HTML. – SeanJA