【问题标题】:Yii2: Reusing Form Fields through WidgetYii2:通过 Widget 重用表单域
【发布时间】:2017-08-13 21:34:45
【问题描述】:

我有一个字段是 Select2 小部件字段,它通常以多种形式使用,但是一段时间后复制粘贴相同的代码真的很烦人。因此,我决定最好只为这个字段创建一个小部件。

字段如下

      <?= $form->field($model, 'contact_id')->widget(Select2::className(), [
        'initValueText' => empty($model->contact_id) ? '' : $model->contact->contact_id . ' ' . $model->contact->fullname,
        'options' => [
            'class' => 'input-sm',
            'id' => 'contact_id',
            'placeholder' => '-- Search --',
            'disabled' => $disabled,
            'onchange' => new JsExpression("get_contact_info($(this).val())"),
        ],
        'pluginOptions' => [
            'allowClear' => true,
            'language' => [
                'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
            ],
            'ajax' => [
                'url' => $fetch_url,
                'dataType' => 'json',
                'data' => new JsExpression('function(params) { return {q:params.term}; }'),
                'results' => new JsExpression('function(data,page) { return {results:data.results.text}; }'),
            ],
            'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
            'templateResult' => new JsExpression('function(contact) { return contact.text; }'),
            'templateSelection' => new JsExpression('function (contact) { return contact.text; }'),
        ],
    ]); ?>

此字段使用 Ajax Fetching,必须允许在创建和更新表单中使用。

谁能指点我正确的方向。

【问题讨论】:

  • 没错,创建一个widget并根据需要进行配置。

标签: ajax yii2 widget jquery-select2


【解决方案1】:

我看到两个解决方案: a)创建小部件 - 更多工作,但通过添加额外设置灵活使用 b) 创建单独的视图并渲染它 - 更快,但没有那么灵活

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多