2014-11-04 7 views
8

Ho cercato nel web in lungo e in largo per una soluzione a questo problema. So già il modo in discesa Yii2 è questo:

<?php 
use yii\helpers\ArrayHelper; 
use backend\models\Standard; 
?> 

<?= Html::activeDropDownList($model, 's_id', 
     ArrayHelper::map(Standard::find()->all(), 's_id', 'name')) ?> 

Ma io voglio fare la discesa senza l'$model ... c'è un modo per fare questo?

Grazie in anticipo!

risposta

18

È inoltre possibile utilizzare

Html::dropDownList()

<?= Html::dropDownList('s_id', null, 
     ArrayHelper::map(Standard::find()->all(), 's_id', 'name')) ?> 

Vedere Yii Manual

+1

Questo non funziona, genera l'errore: htmlspecialchars() si aspetta che il parametro 1 sia stringa, matrice data perché come parametro devo ancora passare: 'Standard :: find() -> all()' che è ancora un array ... come posso bypassare questo? –

+0

Il primo parametro è il nome da assegnare al controllo, il secondo il valore e il terzo gli elementi. – Barry

+1

Grazie, ho avuto i miei parametri erroneamente assegnati! Questo è risolto e grazie per la tua rapida risposta. Posso darti fastidio SE incontro più problemi? P.S: accetterò la risposta in 2 minuti ... Questo è quando raggiungo il tempo standard. : D –

2

È anche possibile utilizzare questo:

public function getAll() 
{ 
    $get = Standard::find()->all(); 
    $result = ArrayHelper::map($get, 'id', 'name'); 
    return $result; 
} 

Poi discesa:

<?= Html::dropDownList(Standard::getAll(), ['prompt' => '--- select ---']) ?> 

Questo risolverà il tuo errore.