Sommario
Dalla request alla pagina web
Grande è la tentazione di utilizzare i valori provenienti dalla $_REQUEST direttamente nella view, ma così facendo rischiamo di perdere pezzi per strada.
Il percorso corretto da compiere è questo
$_REQUEST ---> controller ---> action ---> view.
Esempio, voglio far transitare una variabile $payment_id dal flusso HTTP alla pagina web
index.php?r=voucher/create&payment_id=2
Step 1: dalla request al controller
Supponiamo di voler creare un nuovo record per l’oggetto voucher, che ha bisogno di essere agganciato al record payment_id=1
- file VoucherController.php
public function actionCreate() { $model=new Voucher; if(isset($_REQUEST['Voucher'])) { $model->attributes=$_REQUEST['Voucher']; $payment_id = $model->payment_id; if($model->save()) $this->redirect(array('index','id'=>$model->id, 'payment_id' => $payment_id)); } else { $payment_id = $_REQUEST['payment_id']; } $this->render('create',array( 'model'=>$model, 'payment_id' => $payment_id, )); }
con questo frammento valorizziamo la variabile da passare e la passiamo al metodo create nell’array dei parametri (il secondo parametro della funzione render).
Step 2: dal controller alla action
- file voucher/create.php
<?php echo $this->renderPartial('_form', array('model'=>$model, 'payment_id' => $payment_id)); >?>
il valore $payment_id è quello che arriva dalla funzione render citata sopra. Con questa istruzione passiamo al template _form.php l’array che contiene $model e $payment_id
Step 3: dalla action alla view
- file voucher/_form.php
<?php echo $form->hiddenField($model,'payment_id', array('value' => $payment_id)); ?>
questo è l’ultimo passaggio, siamo arrivati. L’html generato al volo conterrà questo campo hidden:
<input id=”Voucher_payment_id” type=”hidden” name=”Voucher[payment_id]” value=”2“>.
Segui tutto l’articolo sul Wiki.
Commenti recenti