【问题标题】:How to solve error on dependent dropdownlist?如何解决依赖下拉列表的错误?
【发布时间】:2019-01-23 16:31:39
【问题描述】:

Dependent DropdownList 工作得特别好。但是当我点击下拉菜单时,我看不到选项列表

我已经阅读了所有论坛,但我找不到像我这样的问题

index.php

$a = [
    'Qoraqalpog‘iston Respublikasi' => 'Qoraqalpog‘iston Respublikasi',
    'Andijon viloyati' =>   'Andijon viloyati',
    'Buxoro viloyati' =>  'Buxoro viloyati',
    'Jizzax viloyati' =>   'Jizzax viloyati',
    'Qashqadaryo viloyati' => 'Qashqadaryo viloyati',
    'Navoiy viloyati' =>   'Navoiy viloyati',
    'Namangan viloyati' =>   'Namangan viloyati',
    'Samarqand viloyati' =>   'Samarqand viloyati',
    'Sirdaryo viloyati' =>   'Sirdaryo viloyati',
    'Surxondaryo viloyati' =>   'Surxondaryo viloyati',
    'Toshkent viloyati' =>   'Toshkent viloyati',
    'Farg‘ona viloyati' =>   'Farg‘ona viloyati',
    'Xorazm viloyati' => 'Xorazm viloyati',
    'Toshkent shahri' => 'Toshkent shahri',
];
<?php $f = ActiveForm::begin([
                        'fieldConfig' => ['options' => ['class' => 'input-field']],
                        'enableAjaxValidation' => false,
                        'enableClientValidation'=>true,

                        'options' => [
                            'enctype' => 'multipart/form-data',
                            // 'onSubmit'=> 'return false'
                        ]
                    ])?>
                    <?= $f->field($contact,'name_of')->label(Yii::t('template','Ta\'lim muassasasi nomi yoki raqami*'))->error(false)?>
                    <?= $f->field($contact, 'city' ,['options' => ['class' => 'input-field']])->error(false)->label(Yii::t('template',"Ta'lim muassasasi joylashgan hudud*"))
                        ->dropDownList(
                            $a,
                            [
                                'prompt'=>Yii::t('template','Hududni tanlang'),
                                'onchange'=> '
                                $.post( "'.Yii::$app->urlManager->createUrl('site/regions?id=').'"+$(this).val(), function( data ) {
                                  $( "select#contactform-region" ).html( data );
                                });
                                               '
                            ]

                        );?>

                    <?= $f->field($contact,'region')->error(false)->dropDownList(
                            $empty,
                        [
                        ]);?>

actionRegions()

public function actionRegions($id){
  $posts = Regions::find()
            ->where(['idCity' => $id])
            ->all();
        $count = Regions::find()
            ->where(['idCity' => $id])
            ->count();
        $lang = Yii::$app->language;
        if ($count>0){
            foreach($posts as $post) {
                echo "<option value='".$post->id."'>".$post->{"name_".$lang}."</option>";
            }
        } else {
            echo "<option>-</option>";
        }

    }

这里是空的 https://imgur.com/a/IDso2oQ 在点击下拉菜单上什么都没有发生 https://imgur.com/a/wh4ZFd9

【问题讨论】:

  • 你为什么不使用select2 DepDrop by kartik,让你的生活更轻松
  • 也许这是我不明白的事情,但我没有看到index.php 调用actionRegions。您是否验证了 HTML?您可以为此使用NuHtml,或W3C Validator Service
  • @DinoCoderSaurus 它的 Yii framework 使用 MVC 模式,您不需要调用操作。
  • 在 googleChrome 开发工具中,在 Network 选项卡中,你可以看到如何进行后期连接?状态是200?有什么反应?我
  • 你必须返回一个 json endoded 数组或选项 => 值。

标签: php yii2 dropdown


【解决方案1】:

尝试返回 html 标记的 json 字符串。

    $list ='';
    if ($count>0){
        foreach($posts as $post) {
            $list .= "<option value='".$post->id."'>".$post->{"name_".$lang}."</option>";
        }
    } else {
        $list = "<option>-</option>";
    }
    return json_encode($list);

【讨论】:

    【解决方案2】:

    在我看来,您正在使用选择包装器。 我认为您应该在 ajax 之后更新您的选择包装器插件内容。 如果你在这里使用物化 css 是一个解决方案How to dynamically modify <select> in materialize css framework

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-03
      • 2013-04-29
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多