2

関連するドロップダウンが変更されるたびに、DB から特定の値をフォーム フィールドに入力しようとしていますが、その理由がわかりません。

  • ドロップダウンの js()->val() を正常に使用して、入力しようとしているフィールドの val() を設定できます ($price)
  • しかし、クエリまたはトラブルシューティングの目的で追加したアラートで js()->val() を使用するたびに、フィールド名参照文字列に「.val()」または類似のものを追加して出力します...

私はそれが初心者の質問であることを知っていますが、私はこれをいくつかの方法で見て、さまざまな方法を試しましたが、うまくいきません。以下のクエリで「id」の値をハードコードすると、期待どおりに機能します。クエリに適切な値を渡すことができる必要があります...

$form = $this->add('Form');
$product = $form->addField('dropdown', 'name');
$product->setModel('Product');
$price = $form->addField('line', 'price_per');
$product->js('change', $price->js()
    ->val($product->js()->val())
    ->univ()
    ->alert('ID is : ' . $product->js()->val()));   

// $product->js('change', $price->js()->val(
    // $this->api->db->dsql() //->expr(2+2)
    // ->debug()
    // ->table('product')
    // ->field('price_per')
    // ->where('id',$product->js()->val())
    // ->getOne()
    // ));
4

1 に答える 1

1

あなたの問題はここにあります:

->alert('ID is : ' . $product->js()->val()));  

js() は、JavaScript に変換できる PHP チェーンを生成することを覚えておく必要があります。文字列と連結すると、文字列になり、アラートになります。これを試して:

->alert($product->js()->val()));  

それはうまくいくはずです。

必要な連結を使用して UNIV チェーンにメソッドを追加できます。js(null,' 2+4') を使用して任意の JavaScript コードを挿入することもできますが、エスケープされないので注意してください。

AJAX

これは、JavaScript がサーバー側のアルゴリズムに依存している場合の手法です。JavaScript はリクエストをバックエンドに送信します。Agile Toolkit は、AJAXEC (Ajax + Exec) と呼ばれる手法を使用します。サーバーにリクエストを送信しますが、サーバーは実行するためにJavaScriptのチャンクで応答します(したがって、 ->execute() メソッド)

この機能を Agile Toolkit でラップする方法はいくつかありますが、最初に基本を確認する必要があります。

于 2013-09-06T23:58:32.610 に答える