1

またね。他のドロップダウン値に応じてコンテンツを含むドロップダウンを作成する方法を尋ねる多くのスレッドを見てきました。これらのロジックは私にも当てはまります。しかし、ドロップダウンの内容が他の2つのドロップダウンの選択/値に依存するという問題があります。1 つのドロップダウンに依存するためのコードは次のようになります。

$form = $crud->form;

$dd1 = $form->addField('dropdown', 'color', 'Color');
$dd1->setValueList(array('1' => 'white', '2' => 'black'));
$dd1->setEmptyText('all');

$dd2 = $form->addField('dropdown', 'size', 'Size');
$dd2->setValueList(array('1' => 'small', '2' => 'normal', '3' => 'large'));
$dd2->setModel('Size');

$dd3 = $form->getElement('packaging_id');

if ($_GET['color']) {
    $dd3->model->addCondition('color', $_GET['color']);
}

if ($_GET['size']) {
    $dd3->model->addCondition('size', $_GET['size']);
}

$dd1->js('change',
    $form->js()->atk4_form('reloadField', 'packaging_id',
        array($this->api->url(), 'color' => $dd1->js()->val())
    )
);

$dd2->js('change',
    $form->js()->atk4_form('reloadField', 'packaging_id',
        array($this->api->url(), 'size' => $dd2->js()->val())
    )
);

これらのコードを使用すると、「サイズ」または「色」オプションdd3に一致するパッケージがドロップダウンに表示されます。しかし、「サイズ」オプションと「色」オプションの両方に一致するパッケージでドロップダウンが満たされる必要があります(たとえば、「小」と「黒」のパッケージ)。両方のドロップダウンから値を取得し、それを 'reloadField' $_GET 引数に入れる方法が必要だと思います。次に、$_GET から抽出し、2 つの条件を適用します。しかし、私はまだ方法を見つけていません。誰でも私を助けることができますか?ありがとう。dd3dd1dd2

さよなら...

4

1 に答える 1

2

説明

のパラメータatk4_formは次のとおりです。

->atk4_form($js_method, $param1, $param2, $param3, ...)

結果として、JS メソッド$js_methodui.atk4_form.js次のように呼び出されます。

->$js_method($param1, $param2, $param3, ...)

使用するメソッドが$js_method = 'reloadField'の場合、次のパラメーターを指定できます。

reloadField: function(field_name, url, fn, notrigger, arg)

urlそのため、パラメーターを使用する方法とパラメーターを使用する方法のいずれか (または両方) で URL 引数を渡すことができargます。


解決

したがって、これらのソリューションのいずれかが機能するはずです。

URL に既に含まれている URL パラメーターを渡します (PHP を使用、間違ったアプローチ):

->atk4_form(
    'reloadField',
    'packaging_id',
    $this->api->url(null, array( /* base URL + additional parameters, formatted by PHP */
        'color' => $dd1->js()->val(),
        'size'  => $dd2->js()->val(),
    ))
)

またはJSを使用してURLを動的に生成します(これは正しい方法です):

->atk4_form(
    'reloadField',
    'packaging_id',
    $this->api->url(), /* base URL */
    null,
    null,
    array( /* additional parameters formatted by JS */
        'color' => $dd1->js()->val(),
        'size'  => $dd2->js()->val(),
   )
)
于 2014-05-19T09:05:53.803 に答える