Ho realizzato un’applicazione per la gestione dei documenti con Yii e MySQL utilizzando un database con l’integrità referenziale.
Vorrei gestire gli errori che compaiono quando si tenta di cancellare un record dalla tabella parent relazionato con quella child tramite popup (CJuiDialog).
Ho incorporato CJuiDialog nella vista dove deve comparire l’errore ma non so come far apparire il popup chiamandolo dal controller.
Nel codice del controller, intercetto l’exception del database per visualizzare il popup in caso di errore.
Ho provato a seguire l’esempio in http://www.yiiframework.com/doc/api/1.1/CJuiDialog/ e utilizzando il link il popup viene aperto ma come posso fare la stessa cosa dal controller ?
view.php
<?php
$this->breadcrumbs=array(
'Clients'=>array('index'),
$model->name,
);
$this->menu=array(
array('label'=>'List Client', 'url'=>array('index')),
array('label'=>'Create Client', 'url'=>array('create')),
array('label'=>'Update Client', 'url'=>array('update', 'id'=>$model->idclient)),
array('label'=>'Delete Client', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->idclient),'confirm'=>'Are you sure you want to delete this item?')),
array('label'=>'Manage Client', 'url'=>array('admin')),
);
?>
<h1>View Client <?php echo $model->name; ?></h1>
<?php $this->widget(‘zii.widgets.CDetailView’, array(
'data'=>$model,
'attributes'=>array(
//'idclient',
'name',
'vat_no',
'reference',
'address',
'zipcode',
'city',
'country',
'phone',
'fax',
//'mail',
array(
'name' => 'mail',
'type' => 'raw',
'value' => CHtml::link(CHtml::encode($model->mail), "mailto:".CHtml::encode($model->mail)),
),
),
));
$this->beginWidget(‘zii.widgets.jui.CJuiDialog’, array(
'id'=>'mydialog',
// additional javascript options for the dialog plugin
'options'=>array(
'title'=>'Dialog box 1',
'autoOpen'=>false,
'modal'=>true,
),
));
echo ‘dialog content here’;
$this->endWidget(‘zii.widgets.jui.CJuiDialog’);
// the link that may open the dialog
echo CHtml::link(‘open dialog’, ‘#’, array(
'onclick'=>'$("#mydialog").dialog("open"); return false;',
));
?>
clientcontroller.php
public function actionDelete($id)
{
if(Yii::app()->request->isPostRequest)
{
try {
$this->loadModel($id)->delete();
} catch (CDbException $e) {
"Codice per chiamare il popup";
}
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
else
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
Ringrazio anticipatamente per le info.