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?