Suggerimento inserimento di 2 model

Ciao ragazzi

volevo qualche suggerimento su come è possibile fare inserimento di 2 model in una sola view.

al submit salvare tutte e 2 model.

il primo model SEARCHES contiene

ID

TITOLO

DESCRIZIONE

SOURCE_ID

il secondo model FILES contiene

ID

ID_SEARCHES

DESCRIZIONE

NOME_FILE

al submit salva il primo model e poi prende l’id e lo mette nel secondo model per ogni file che viene fatto upload.

Si fa esattamente come hai scritto tu

allora se faccio in

Controller

$this->render(‘model’=>$model, ‘model1’=>model1);

View

<form>

input model 1

input model 2

<submit>

</form>

al submit mi invia sia il model1 che model2 ?

funziona anche ajax validation?

Mmm mi sa che hai fatto un po’ di confusione: il submit è uno solo e va a finire in un controller. Nel controller devi salvare i due model in modo differente.

Se Faccio una cosa del genere, mi funziona oppure no


<?php $form=$this->beginWidget('CActiveForm', array(

	    'id'=>'form',

	    'enableAjaxValidation'=>true,

	    'htmlOptions' => array('enctype' => 'multipart/form-data'), // ADD THIS

	)); ?>


	    <div class="row">

	        <?php echo $form->labelEx($model,'title'); ?>

	        <?php echo $form->textField($model,'title'); ?>

	        <?php echo $form->error($model,'title'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'description'); ?>

	        <?php echo $form->textArea($model,'description'); ?>

	        <?php echo $form->error($model,'description'); ?>

	    </div>

	

	    <div class="row">

	        <?php echo $form->labelEx($model,'source_id'); ?>

	        <?php echo $form->DropDownList($model,'source_id', $dropdown);?>

	        <?php echo $form->error($model,'source_id'); ?>

	    </div>


	    <div class="row">

	        <?php echo $form->labelEx($model_1,'description'); ?> //<------------------NOTARE 

	        <?php echo $form->textArea($model_1,'description'); ?>

	        <?php echo $form->error($model_1,'description'); ?>

	    </div>


	    <div class="row buttons">

	        <?php echo CHtml::submitButton('Submit'); ?>

	    </div>

	

<?php $this->endWidget(); ?>

Se no come posso fare una cosa del genere

Ora ti spiego:

Supponiamo di avere una tabella Prodotti. Quindi supponiamo di avere un model Prodotti. E supponiamo di aver passato a questo form


'model' => new Prodotti

Il codice che ho appena scritto sarà presente nel Controller. Quindi nella pagina del _form potremo usare questo:


<?php echo $form->textField($model,'title'); ?>

In poche parole, verrà generato un campo che assumerà il nome Prodotti[title].

Per essere sicuri che il codice che ci hai postato stia lavorando bene devi verificare che questo codice, che fariferimento al $model Files crei un campo Files[description]:


            <div class="row">

                <?php echo $form->labelEx($model_1,'description'); ?> //<------------------NOTARE 

                <?php echo $form->textArea($model_1,'description'); ?>

                <?php echo $form->error($model_1,'description'); ?>

            </div>



A questo punto, una volta fatto il submit, dovresti arrivare a SearchesController (dico bene) nella action actionCreate. A questo punto, controlli se esiste $_POST[‘Searches’]. Siccome hai usato due model , dovrai fare lo stesso con $_POST[‘Files’].