lexen77
(Antonio Flaminio)
June 8, 2015, 5:38pm
1
Ciao,
nella GridView della mia pagina index vorrei inserire, in una colonna, una DropDownList per filtrare i dati.
La DropDownList è popolata dai record con campi ‘nome’+‘Cognome’ della tabella user.
Ho usato questo codice che funziona in altre pagine tranne che nella GridView.
Come posso risolvere?
Grazie
public function getFullName()
{
return $this->nome . ’ ’ . $this->cognome;
}
<?= GridView::widget([
‘dataProvider’ => $dataProvider,
‘filterModel’ => $searchModel,
‘columns’ => [
[‘class’ => ‘yii\grid\SerialColumn’],
[
‘attribute’ => ‘Utente’,
‘value’ => ‘id_utente’,
‘filter’ => Html::activeDropDownList($searchModel, ‘id_user’, ArrayHelper::map(\app\models\user::find()->asArray()->all(), ‘id_user’,‘fullName’),[‘class’=>‘form-control’,‘prompt’ => ‘---- Seleziona ----’]),
],
[‘class’ => ‘yii\grid\ActionColumn’],
],
]); ?>
Che cosa visualizza:
var_dump(\app\models\user::find()->asArray()->all());
?
lexen77
(Antonio Flaminio)
June 8, 2015, 6:10pm
3
Estraggo tutti gli utenti dalla tabella User
E controllando il contenuto di
var_dump( ArrayHelper::map(\app\models\user::find()->asArray()->all(), 'id_user','fullName') )
E’ valorizzato? O è vuoto?
lexen77
(Antonio Flaminio)
June 8, 2015, 7:35pm
5
E controllando il contenuto di
var_dump( ArrayHelper::map(\app\models\user::find()->asArray()->all(), 'id_user','fullName') )
E’ valorizzato? O è vuoto?
no no è valorizzato, ho l’impressione che questa sintassi non viene interpretata quando si trova all’interno della GridView. Infatti se la stessa sintassi la metto nel form inlla pagina details funziona
Funziona anche nella GridView.
Nella riga del filtro con il menù a discesa, il menù a discesa si visualizza o non si visualizza proprio?
lexen77
(Antonio Flaminio)
June 8, 2015, 7:50pm
7
Funziona anche nella GridView.
Nella riga del filtro con il menù a discesa, il menù a discesa si visualizza o non si visualizza proprio?
visualizzo una activeDropDownList vuota senza nessun elemento dentro
Quindi il problema è solo nei valori passati, cioè qui:
ArrayHelper::map(\app\models\user::find()->asArray()->all(), 'id_user','fullName')
Prova senza asArray(), ovvero;
ArrayHelper::map(\app\models\user::find()->all(), 'id_user','fullName')