Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法将下拉字段选项绑定到yii2中的特定输入类型_Php_Yii2 - Fatal编程技术网

Php 有没有办法将下拉字段选项绑定到yii2中的特定输入类型

Php 有没有办法将下拉字段选项绑定到yii2中的特定输入类型,php,yii2,Php,Yii2,我有一个由媒体类型下拉列表组成的表单 <?= $form->field($model, 'media_type')->dropDownList( [ 'text' => 'Text', 'image' => 'Image', 'url' => 'Url', 'audio' => 'Audio', 'video' => 'Video', ], [

我有一个由媒体类型下拉列表组成的表单

<?= $form->field($model, 'media_type')->dropDownList(
    [
        'text' => 'Text',
        'image' => 'Image',
        'url' => 'Url',
        'audio' => 'Audio',
        'video' => 'Video',
    ], 
    [
        'options' => ['prompt' => 'Select Media Type']
    ]
) ?>

我想在更改yii2表单中的媒体类型时更改值字段。例如,如果选择文本选项,则需要显示tinymce编辑器。或者,如果我们选择图像,那么我们需要显示文件输入字段

文件输入字段

<?php
    echo $form->field ( $model, 'value' )->fileInput ();
    if ($model->value != ""){
        echo Html::a('Click here to view image', $model->value, ['target' => '_blank']);
    }
?>

微型mce编辑器

<?= $form->field($model, 'value')->textarea(['rows' => 6])->widget(letyii\tinymce\Tinymce::className(), [
    'options' => [
        'class' => '',
    ],
    'configs' => [ 
        'plugins' => 'advlist autolink link lists charmap preview code colorpicker',
        'height' => 300,
        'selector' => 'textarea',
        'forced_root_block' => '',
    ],
]); 
?>

不管怎样,实现这一目标将非常有帮助


谢谢

添加一些JavaScript来监听下拉列表的更改,并根据所选值显示/隐藏元素

我写了一个小例子。您必须更改ID以匹配您的元素,还可能进行一些其他小更改,但类似的更改应该可以工作

<?php
$this->registerJs("
    $(function() {
        $('#your-form-media-type-id').on('change', function() {
            var value = this.value
            switch (value) {
                case 'text':
                    $('#your-mce-div').show();
                    $('#your-image-input-div').hide();
                break;

                case 'image':
                    $('#your-image-input-div').show();
                    $('#your-mce-div').hide();
                break;
            }
        });
   });
");

谢谢你的回答。我用你们的答案设法解决了这个问题。我使用外部div id来显示和隐藏元素。