【问题标题】:yii2 dep drop kartick dependenciesyii2 dep 删除 kartick 依赖项
【发布时间】:2020-05-18 08:23:50
【问题描述】:

大家好,我是 yii 的菜鸟,我正在尝试让 kartik 工作,但我无法让他们加载依赖项。我正在尝试让 kartik 工作,但我无法让它加载依赖项,如果我看到通过 yii 的内置调试进行的调用,'URL' 参数中存在的尖叫并不是真正计算的 ,我也试过把它写成固定的,但它并没有真正想到。 但是,如果我做一个简单的回显,它就会返回正确。

       <?=$form->field($model, 'name')->
                widget(Select2::classname(), ['data' => $listdataA,
                    'id' => 'invoice-name',
                    'options' => ['placeholder' => 'Seleziona anagrafica ...', 'id' => 'lvl-0',],
                    'pluginOptions' => [
                        'allowClear' => true
                    ],
                    'pluginEvents' => [
                        'select2:select' => new JsExpression("function (e)    {
                         var id=e.params.data.id;
                        $.get('index.php?r=invoice/get-location-address', {id: id}, function(data) {
                         if (data !== null) {
                        document.getElementById('piva').value=data.PIVA;
                       document.getElementById('indi').value=data.Indirizzo;
                        } else {
                            //if data wasn't found the alert.
                         alert('We\'re sorry but we couldn\'t load the the location data!');
                        }
                     });
                    }")]
        ]);
        ?>
        <?= $form->field($model, 'attn')->textInput(['maxlength' => true, 'placeholder' => 'ATTN', 'id' => 'piva'])->label(false) ?>
        <?= $form->field($model, 'address')->textarea(['rows' => 6, 'placeholder' => 'Address', 'id' => 'indi'])->label(false) ?>
        <?php
        echo $form->field($model, 'cd_contact')->widget(DepDrop::classname(), [
            'options' => ['placeholder' => 'Select ...'],
            'type' => DepDrop::TYPE_SELECT2,
            'select2Options' => ['pluginOptions' => ['allowClear' => true]],
            'pluginOptions' => [
                'depends' => [Html::getInputId($model, 'name')], //['lvl-0'],
                'url' => Url::to(['/contact/list']),
                'loadingText' => 'caricamento dati ...',
            ]
        ]);
        ?>

在控制器中

     public function actionList() {

    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    $out = [];
    if (isset($_POST['depdrop_parents'])) {
        $id = end($_POST['depdrop_parents']);
        $list = Contact::find()->andWhere(['id_ana_ref' => $id])->asArray()->all();
        var_dump($list);
        $selected = null;
        if ($id != null && count($list) > 0) {
            $selected = '';
            foreach ($list as $i => $account) {
                $out[] = ['id' => $account['id_contact'], 'name' => $account['Name']];
                if ($i == 0) {
                    $selected = $account['id_contact'];
                }
            }
            // Shows how you can preselect a value
            return ['output' => $out, 'selected' => $selected];
        }
    }

【问题讨论】:

  • 您能否再次阅读您的问题并改进它以突出问题和需求?我会避免重复未加载的依赖项。如果更清楚,写一次就足够了。并且更准确地了解您真正需要的内容。谢谢。
  • 嗨 Axel,在 select2 中发现了问题:选择如果我在这种情况下运行 java 代码,则 drop 停止工作

标签: php yii yii2 kartik-v


【解决方案1】:

解决了,如果你把任何 java 放在 kartick 上,它们会避免使用标准代码

解决方案

 <?=
                $form->field($model, 'name')->
                widget(Select2::classname(), ['data' => $listdataA,
                    'id' => 'invoice-name',
                    'options' => ['placeholder' => 'Seleziona anagrafica ...' ,'id' => 'lvl-0',],
                    'pluginOptions' => [
                        'allowClear' => true
                    ],
                    ]);
       ?>
        <?= $form->field($model, 'attn')->textInput(['maxlength' => true, 'placeholder' => 'ATTN','onclick'=>'magsearch()', 'id' => 'piva'])->label(false) ?>
        <?= $form->field($model, 'address')->textarea(['rows' => 6, 'placeholder' => 'Address', 'id' => 'indi'])->label(false) ?>
        <?php
        // $url = \yii\helpers\Url::to(['index.php?r=contact/list']);
        echo $form->field($model, 'cd_contact')->widget(DepDrop::classname(), [
            'data' => $datac,
            'options' => ['placeholder' => 'carico ...'],
            'type' => DepDrop::TYPE_SELECT2,
            'select2Options' => ['pluginOptions' => ['allowClear' => true]],
            'pluginOptions' => [
                'depends' => ['lvl-0'],
                'url' => Url::to(['/contact/list']),
             //   'params' => ['lvl-0'],
                'loadingText' => 'caricamento dati ...',
            ]
        ]);
        ?>

【讨论】:

  • 你能解释一下解决方案吗?什么意思:“如果你把任何java放在kartick上,他们会避免标准代码”? stackoverflow 用于写出清晰的问题和清晰的答案。在写作之前,让自己脱离上下文,站在读者的立场上。命名也很重要,你写了kartick,kartiks,kartik。错别字很好,但这里的错字太多了。这也是你投反对票的原因。
  • 抱歉,这是我第一次上这个门户,也许我可以建议你对那些刚接触的人更友善一点,如果我给你的所有答案都不要少这个门户的所有访问者都和你一样,我仍然感到困惑。
  • 无论如何,如果您将任何 javascript 放入“select2:select”选项中,解决方案就是这样,这会覆盖标准函数,因此该元素不再起作用。
  • 我没有侮辱你或想让你难过。我刚刚在你的问题和答案中提到了你可以改进和修复的东西——比如澄清、命名、缩进。你没有修复它们(你可以随时编辑它们),所以我可能还会认为,如果所有用户不遵循提示或建议来改进他们的问题或答案,Stackoverflow 会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多