1

JavaScript のプッシュをエミュレートする基本的な Smarty 修飾子を作成しました。

function smarty_modifier_push($array, $push){
    if(!isset($array)){
        $array = array($push);
    }elseif(is_array($array)){
        $array[] = $push;
    }
    return $array;
}

これが私の.tplファイルの私のコードです

Problems: 
<select name="problems[]" multiple="multiple">
    <option value="">Select Problems</option>
    {foreach from=$problems key=id item=name}
        {$newArray|push:$id}
        <option value="{$id}">{$name}</option>
    {/foreach}
</select>
{$newArray}

問題: ドロップダウンは約 20 の要素で構成されているため、$newArray約 20 の ID が必要ですが、確認$newArrayすると空です。そのため、修飾子の実行後にテンプレートに割り当てられることはないようです。

事前に .tpl ファイルで使用できることはわかってい{assign var=newArray}ますが、修飾子関数内から新しい変数を割り当てる方法があることを願っています。また、変数が渡されるため、関数プラグインから可能であることも知ってい$smartyますが、具体的に知りたいのは、修飾子プラグインを使用してこれを機能させるにはどうすればよいですか?

4

2 に答える 2

0

そのような $array 変数の前に「&」をプッシュしてみてください

function smarty_modifier_push(& $array, $push){
    if(!isset($array)){
        $array = array($push);
    }elseif(is_array($array)){
        $array[] = $push;
    }
    return $array;
}
于 2012-10-16T18:01:46.603 に答える
0

SMARTY FORUMに投稿された、役立つコードがいくつかあります。他の人は、これは必要なことを行うための方法ですが、少し複雑であり、新しい更新プログラムがリリースされたときに動作するとは保証されていないと指摘しています. それがあなたを助けることを願っています。乾杯。

于 2012-10-16T16:26:10.680 に答える