私はyii2で自分のプロジェクトを行います。 データベースからドロップダウンリスト(kartik depdtopウィジェットを使用)にデータを取得するフォームがあります。 最初のフィールドは「type_of_goods」です。顧客は「type_of_goods」に応じて「goods」を受け取ります。 商品の「goods_amount」と「total_cost」の2つのテキスト入力フィールドが「goods_amount」(goods_amount * price)に依存している。Yii2フォームの入力フィールドはdbの値でカウントされます
お客様が購入したい商品の金額または購入したい金の金額を入力します.jsスクリプトは、どちらの場合でも別のフィールドで彼の価値を示します。
値段はDB内の商品表にあります。 goods_idや商品に関するいくつかの情報を "goods" -field(dbクエリを実行して価格を取得してjs関数に入れる)、あるいはおそらく価格で取得して、上に書いたことを行うjsスクリプトに入れることはできますか?
どうすれば実現できますか?それは正しい方法ですか?
コード: ビュー
<?php $form = ActiveForm::begin([
'options' => [
'class' => 'form-horizontal col-lg-11',
'enctype' => 'multipart/form-data'
],
]); ?>
<?= $form->field($type_of_goods, 'id')
->dropDownList(
ArrayHelper::map(Type_of_goods::find()->all(), 'id', 'name'),
['id'=>'type_of_goods_id']
);
?>
<?= $form->field($goods, 'id')->widget(DepDrop::classname(), [
'options' => ['id' => 'id'],
'pluginOptions' => [
'depends' => ['type_of_goods_id'],
'placeholder' => 'Choose your goods',
'url' => \yii\helpers\Url::to(['goods/goods-dep-type'])
]
]);
?>
<?= $form->field($goods, 'price')->textInput();
?>
<?= $form->field($order, 'amount')->textInput();
?>
<?php ActiveForm::end(); ?>
コントローラー:
public function actionGoodsDepType()
{
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null) {
$game_id = $parents[0];
$out = \app\models\Goods::gelGoodsList($goods_type_id);
echo Json::encode(['output' => $out, 'selected' => '']);
return;
}
}
echo Json::encode(['output' => '', 'selected' => '']);
}
モデル:あなたはAJAXリクエストごとにユーザ入力の新しい値を作成する必要があります
public static function gelGoodsList($type_id)
{
$query = self::find()
->where(['type_id' => $type_id])
->select(['id', 'name'])->asArray()->all();
return $query;
}
public static function getPrice($id)
{
$query = self::find()
->where(['id' => $id])
->select(['price'])->asArray()->one();
return $query;
}
ありがとうございますが、それが動作するかどうかわからない、私はすべての私の値を置くと、私の依存ドロップダウンリストは動作を停止します。なぜわからないのですか – wiaim
少しの情報が欠けているので、私は確信できません。私はおおよその解決策を書いた。依存するドロップダウンが機能しなくなった場合は、コンソールでエラーがないかチェックしてください。何もない場合は、おそらく "ネットワーク"セクションですか? –
私は説明してください、コンソールは "SyntaxError:missing)after argument list"と書くことができますが、どこに置くべきかわかりません。そして、私が間違っていない場合、2つのかっこがありません – wiaim