Smarty html_options

2 Cevap php

Smarty adlı html_options fonksiyonu için, bu yapmak zorunda kalmamak için bir yoludur (smarty kullanarak değil daha başka) var mı?

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

Ben bu şablonda görünmeyecektir fark, ancak (o da tanımsız dizinler hakkında gürültü ile benim hata günlükleri doldurur) şablonda tanımlanan olmayan bir şey bırakmak için kötü bir uygulama gibi görünüyor.

[Değiştir]

Ne arıyorum tanımsız endeksi hataları sırıtmak, yanı sıra şablon dosyalarında smarty gürültüyü azaltarak olmadan bu gibi yapmak için bir yoldur.

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

Ben daha olası bir modifiye html_options eklenti olacağını tahmin?

[Değiştir]

@ Mmcgrail fikri başına:

{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}

Bu smarty sözde hedefi ayrılmanın, şablonda yeni değişkenler yaratıyor çünkü bu daha da kötü buluyorum.

Ben bu işleri sanırım:

veya:

<?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');

Ve şablonu:

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

Ama sonra bütün smarty tutma parçanın noktası nedir post / get / istek / çerez / sunucu / sabitleri size yazmak zorunda kod miktarını iki katına olmadan şablonda bunları kullanmayın eğer?

2 Cevap

Ne istiyorum mümkün değil, ayrı bir eklenti yazmadan ... belki ben bunu gibi bir şey olacak çıkıyor:

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

Bu deneyin

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

ben bu soru cevap düşünüyorum