fdilecce
(Dilecce Francesco)
October 22, 2012, 3:10pm
1
ciao a tutti.
ho letto molto su questo argomento, mi sembrava di aver capito che se nel mio controller (actionUpdate) metto:
$this->render('update',array(
'model' => $model,
'modelInternicode' => new Internicode,
));
poi nella _form posso usare entrambi i model: $model e $modelInternicode:
<div class="row">
<?php echo $form->labelEx(modelInternicode,'Specifica un nuovo Elenco interni'); ?>
<?php $data=CHtml::listData(Dispoutenti::model()->findAll(),'exten','nome');
$this->widget('ext.select2.ESelect2',array(
'model' => modelInternicode,
'attribute' => 'interno',
'data' => $data,
'options'=>array(
'placeholder'=>'Seleziona interni',
'width' => '200px;',
),
'htmlOptions'=>array(
'multiple'=>'multiple',
),
)); ?>
<?php echo $form->error(modelInternicode,'interno'); ?>
</div>
invece ottengo un errore:
Use of undefined constant modelInternicode - assumed ‘modelInternicode’
Perchè?
Grazie
emafer
(Emanuele Ferrarini)
October 22, 2012, 3:14pm
2
perché hai scritto modelInternicode senza il simbolo della variabile
fdilecce
(Dilecce Francesco)
October 22, 2012, 3:24pm
3
si ti ringrazio tanto,
ma se aggiungo $ cioè: $modelInternicode
ho quest’altro errore:
Undefined variable: modelInternicode
emafer
(Emanuele Ferrarini)
October 22, 2012, 3:40pm
4
Prego
per quanto riguarda il secondo problema, tu dalla view che richiama _form (_create, ad esempio) devi passargli tutte e due le variabili:
<?php echo $this->renderPartial('_form', array('model'=>$model,'modelInternicode' => $modelInternicode)); ?>
fdilecce
(Dilecce Francesco)
October 22, 2012, 4:18pm
5
chiarissimo, grazie!!
ne approfitto per chiederti, se posso un’altra cosa.
sempre nel caso di sopra, nel controller come recupero i dati?
Cioè dovei usare $_POST[‘Internicode’] ma questo cosa è? io mi aspetterei un array bidimensionale ma non mi è chiaro
Grazie ancora
emafer
(Emanuele Ferrarini)
October 22, 2012, 5:38pm
6
Quando dal controller devi caricare quello che ti arriva dal form,
la via più sicura è questa:
$modelInterniCode->attributes = $_POST['InterniCode'];
E Yii automaticamente ti carica i dati.
Post['InterniCode] è un array, del tipo Post['InterniCode][attributo1]…Post['InterniCode][attributon]
fdilecce
(Dilecce Francesco)
October 22, 2012, 5:54pm
7
quello che mi confonde è che la select può avere valori multipli, dunque:
Post[‘Internicode’][‘interno’] dovrebbe essere ancora un array ma non ho capito come ci accedo.
uno degli attributi non è passato dal form per cui non posso usare:
$modelInterniCode->attributes = $_POST['InterniCode'];
emafer
(Emanuele Ferrarini)
October 22, 2012, 8:04pm
8
La tua select multipla sarà sempre un array dentro un array, mentre per quanto riguarda l’attributo non passato dal form, bè Yii passa al model solo quello che gli passi tramite post, gli altri che non hai passato rimangono come erano prima che tu gli dicessi di caricare quanto arrivato via _POST