diiimonn/yii2-widget-checkbox-multiple необходимо реализовать

<?= $form->field($model, 'template_id')->widget(CheckboxMultiple::className(), [
  'dataAttribute' => 'template_id',
  scriptOptions' => [450=>'abc',452=>'xyz'],
 'placeholder' => Yii::t('app', 'Select ...'),
]) ?>

Я пытаюсь реализовать это => https://github.com/diiimonn/yii2-widget-checkbox-multiple

но я не получаю результат. Когда я сделал код, я получаю пустую страницу.

В чем здесь ошибка?


person krishn Patel    schedule 24.03.2017    source источник


Ответы (1)


Есть ли ошибки в консоли js? Я думаю, что проблема связана с набором активов виджетов CheckboxMultiple. Отсутствует свойство зависимостей для активов JQuery. Попробуйте зарегистрировать jQuery вручную перед рендерингом виджета. Свойство dataAttribute также кажется неизвестным в последней версии этого виджета... Это работает для меня:

$this->registerAssetBundle(yii\web\JqueryAsset::className());

echo $form->field($model, 'templates')->widget(CheckboxMultiple::className(), [
    'attributeLabel' => 'templates',
    'placeholder' => Yii::t('app', 'Select ...'),
    'ajax' => [
        'url' => Url::toRoute(['/site/templates']),
    ],
]);

Где атрибут templates является отношением в модели, например:

public function getTemplates()
{
    return $this->hasMany(TemplateModel::className(), ['owner_id' => 'id']);
}

и в шаблонах действий SiteController:

public function actionTemplates()
{
    Yii::$app->response->format = 'json';
    $json = new \stdClass();
    $query = new Query();
    $query->select([
        'id' => 'id',
        'text' => 'name'
    ]);
    $query->from(TemplateModel::tableName());
    if ($search = Yii::$app->request->post('search', '')) {
        $query->where(['like', 'name', $search]);
    }
    $query->orderBy([
        'name' => SORT_ASC
    ]);
    if ($itemsId = Yii::$app->request->post('itemsId', [])) {
        $query->andWhere(['not in', 'id', $itemsId]);
    }
    $query->limit(20);
    $command = $query->createCommand();
    $data = $command->queryAll();
    $json->results = array_values($data);

    return $json;
}

В этом примере я использую таблицу templates со столбцами: id, name и owner_id. Вы должны изменить приведенный выше скрипт на свои имена моделей и атрибутов.

person Marcin Gordel    schedule 24.03.2017
comment
попробую это в понедельник - person krishn Patel; 25.03.2017
comment
NetworkError: 500 Внутренняя ошибка сервера — localhost/physicshs/admin/template-group/add - person krishn Patel; 27.03.2017
comment
Эта ошибка отображается в консоли js или на странице просмотра? Вы установили URL-адрес ajax для этого виджета? И что отображается, если вы вручную запустите localhost/physicshs/admin/template-group/add ? - person Marcin Gordel; 27.03.2017
comment
в консоли, и у меня нет URL-адреса ajax - person krishn Patel; 27.03.2017
comment
Давайте продолжим это обсуждение в чате. - person krishn Patel; 27.03.2017