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

zu implementieren Ich versuche diese =>https://github.com/diiimonn/yii2-widget-checkbox-multiplediiimonn/yii2-widget-Checkbox-Multiple Notwendigkeit

zu implementieren, aber ich bin nicht das Ergebnis bekommen. Wenn ich Code gemacht habe, bekomme ich eine leere Seite.

Was ist der Fehler hier?

Antwort

1

Gibt es Fehler in der js-Konsole? Ich denke, dass dieses Problem scheint mit Assets Bündel von CheckboxMultiple Widgets zu sein. Es fehlt die abhängige Eigenschaft für JQuery Assets. Versuchen Sie, jQuery vor dem Render-Widget manuell zu registrieren. dataAttribute Eigenschaft auch in neueste Version dieses Widget zu sein scheint unbekannt ... Dies funktioniert für mich:

$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']), 
    ], 
]); 

Wo Vorlagen Attributbeziehung Modell ist, wie folgt aus:

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

und in SiteController Aktion Vorlagen:

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; 
} 

In diesem Beispiel verwende ich Tabelle templates mit Spalten: id, name ein nd owner_id. Sie sollten das obige Skript in Ihre Namen von Modellen und Attributen ändern.

+0

Ich werde versuchen, dies am Montag –

+0

es nicht –

+0

prüfen Fehler in js Konsole .. –

Verwandte Themen