簡體   English   中英

驗證yii2中的select2

[英]Validate select2 in yii2

我在_form.php中有一個textInput。 然后,我改變它成為select2。 但在我更改后,驗證無效。 有什么問題? 如何在select2中進行驗證,使其不能為空? 這是代碼:

_form.php這個

<?php

        $formatJs = <<< 'JS'
        var formatPenerima = function (penerima) {
            if (penerima.loading) {
                return penerima.text;
            }
            var markup =
            '<div class="row">' + 
                '<div class="col-sm-4">' +
                    '<b style="margin-left:5px">' + penerima.text + '</b>' + 
                '</div>' +
                '<div class="col-sm-3"><i class="fa fa-phone"></i> ' + penerima.telepon + '</div>' +
                '<div class="col-sm-4"><i class="fa fa-envelope"></i> ' + penerima.mail + '</div>' +
            '</div>';
            return '<div style="overflow:hidden;">' + markup + '</div>';
        };
        var formatPenerimaSelection = function (penerima) {
            return penerima.id || penerima.text;
        }
JS;

        // Register the formatting script
        $this->registerJs($formatJs, \yii\web\View::POS_HEAD);

        // Script to parse the results into the format expected by Select2
        $resultsJs = <<< JS
        function (data, params) {
            params.page = params.page || 1;
            return {
                results: data.results,    // check here
                /*pagination: {
                    more: (params.page * 30) < data.total_count
                }*/
            };
        }
JS;

        $url = Url::to(['/paket/jsonlist']);

        // Render your widget
        // Get data from dummy data
        echo $form->field($model, 'no_induk')->widget(Select2::className(), [
            'name' => 'kv-repo-template',
            'value' => '',
            'initValueText' => '',
            'options' => ['placeholder' => 'Cari pemilik ...', 'id' => 'pengambil'],
            'pluginOptions' => [
                'allowClear' => true,
                'minimumInputLength' => 1,
                'ajax' => [
                    'url' => $url,
                    'dataType' => 'json',
                    'delay' => 250,
                    'data' => new JsExpression('function(params) { return {q:params.term, page: params.page}; }'),
                    'processResults' => new JsExpression($resultsJs),
                    'cache' => true
                ],
                'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
                'templateResult' => new JsExpression('formatPenerima'),
                'templateSelection' => new JsExpression('formatPenerimaSelection'),
            ],
        ])->label('Pemilik');
    ?>

這是我的模型規則:

public function rules()
    {
        return [
            [['no_induk', 'nama', 'no_telepon', 'email', 'kategori_paket', 'nama_pengirim'/*, 'tanggal_sampai'*/],
                'required', 'message' => '{attribute} tidak boleh kosong.'],
            [['id_satpam_pengentry'], 'required', 'message' => 'Nama satpam tidak boleh kosong.'],
            [['kategori_paket', 'status', 'id_satpam_pengentry', 'id_satpam_penyetuju'], 'integer'],
            [['tanggal_sampai', 'tanggal_pengambilan'], 'safe'],
            [['no_induk', 'email'], 'string', 'max' => 255],
            [['nama', 'nama_pengirim', 'nama_pengambil'], 'string', 'max' => 128],
            [['no_telepon'], 'string', 'max' => 64]
        ];
    }

你必須在你的選項中放置class =>“form-control”並刪除id,這樣驗證才有效

echo $form->field($model, 'no_induk')->widget(Select2::className(), [
        'name' => 'kv-repo-template',
        'value' => '',
        'initValueText' => '',
        'options' => ['placeholder' => 'Cari pemilik ...', 'class' => 'form-control'],
        'pluginOptions' => [
            'allowClear' => true,
            'minimumInputLength' => 1,
            'ajax' => [
                'url' => $url,
                'dataType' => 'json',
                'delay' => 250,
                'data' => new JsExpression('function(params) { return {q:params.term, page: params.page}; }'),
                'processResults' => new JsExpression($resultsJs),
                'cache' => true
            ],
            'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
            'templateResult' => new JsExpression('formatPenerima'),
            'templateSelection' => new JsExpression('formatPenerimaSelection'),
        ],
    ])->label('Pemilik');

你可以像這樣在“options”數組中設置“required = true”

'options' => ['placeholder' => 'Cari pemilik ...', 'class' => 'form-control', 'required' => true],

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM