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.yiiframew...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.
Page 1 of 1
Come gestire CJuiDialog dal controller ? Controllare i dialog box dal controller
#2
Posted 11 January 2011 - 11:20 AM
Fossi scriverei questo codice nel controller.
$(document).ready(function(){
$('#mydialog').dialog();
});
#3
Posted 12 January 2011 - 03:27 AM
sensorario, on 11 January 2011 - 11:20 AM, said:
Fossi scriverei questo codice nel controller.
$(document).ready(function(){
$('#mydialog').dialog();
});
Ho aggiunto il codice che mi hai scritto (vedi sotto) ma non funziona ancora :
public function actionDelete($id)
{
if(Yii::app()->request->isPostRequest)
{
try {
// we only allow deletion via POST request
$this->loadModel($id)->delete();
} catch (CDbException $e) {
$(document).ready(function(){
$('#mydialog').dialog();
});
}
Nel file di log degli errori (error_log) compare :
[error] [client 10.4.1.5] PHP Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$' in /var/www/html/projectmgmt/protected/controllers/ClientController.php on line 121
#5
Posted 13 January 2011 - 04:02 AM
Scusami: in sostansa devi aggiungere quello script nel controller dopo aver incluso anche jquery. Purtroppo ho sempre fatto a mano queste cose e non mi è venuto di scrivere il codice per Yii.
#6
Posted 15 January 2011 - 06:30 AM
Ti ringrazio molto per la risposta, purtroppo non ho mai provato ad inserire codice Jquery in PHP.
Potresti farmi un esempio con il blocco di codice che ti ho scritto ?
Potrebbe essere interessante anche per gli altri amici del forum.
Ciao e grazie in anticipo
Potresti farmi un esempio con il blocco di codice che ti ho scritto ?
Potrebbe essere interessante anche per gli altri amici del forum.
Ciao e grazie in anticipo
Share this topic:
Page 1 of 1

Help













