Come gestire CJuiDialog dal controller ?

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'=&gt;array('index'),


&#036;model-&gt;name,

);

$this->menu=array(

array('label'=&gt;'List Client', 'url'=&gt;array('index')),


array('label'=&gt;'Create Client', 'url'=&gt;array('create')),


array('label'=&gt;'Update Client', 'url'=&gt;array('update', 'id'=&gt;&#036;model-&gt;idclient)),


array('label'=&gt;'Delete Client', 'url'=&gt;'#', 'linkOptions'=&gt;array('submit'=&gt;array('delete','id'=&gt;&#036;model-&gt;idclient),'confirm'=&gt;'Are you sure you want to delete this item?')),


array('label'=&gt;'Manage Client', 'url'=&gt;array('admin')),

);

?>

<h1>View Client <?php echo $model->name; ?></h1>

<?php $this->widget(‘zii.widgets.CDetailView’, array(

'data'=&gt;&#036;model,


'attributes'=&gt;array(


	//'idclient',


	'name',


	'vat_no',


	'reference',


	'address',


	'zipcode',


	'city',


	'country',


	'phone',


	'fax',


	//'mail',


	array(  


  			'name' =&gt; 'mail',  


          	'type' =&gt; 'raw',  


          	'value' =&gt; CHtml::link(CHtml::encode(&#036;model-&gt;mail), &quot;mailto:&quot;.CHtml::encode(&#036;model-&gt;mail)), 


	),


),

));

$this->beginWidget(‘zii.widgets.jui.CJuiDialog’, array(

'id'=&gt;'mydialog',


// additional javascript options for the dialog plugin


'options'=&gt;array(


	'title'=&gt;'Dialog box 1',


	'autoOpen'=&gt;false,


	'modal'=&gt;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'=&gt;'&#036;(&quot;#mydialog&quot;).dialog(&quot;open&quot;); return false;',

));

?>

clientcontroller.php

public function actionDelete(&#036;id)


{





	if(Yii::app()-&gt;request-&gt;isPostRequest)


	{


		


           try {


		&#036;this-&gt;loadModel(&#036;id)-&gt;delete();


	} catch (CDbException &#036;e) {


		  &quot;Codice per chiamare il popup&quot;;


		} 


	if(&#33;isset(&#036;_GET['ajax']))


	    &#036;this-&gt;redirect(isset(&#036;_POST['returnUrl']) ? &#036;_POST['returnUrl'] : array('admin'));


	}


	else


            throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');  


			


}

Ringrazio anticipatamente per le info.

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(&#036;id)


{





	if(Yii::app()-&gt;request-&gt;isPostRequest)


	{


	


		


		try {


				// we only allow deletion via POST request


				&#036;this-&gt;loadModel(&#036;id)-&gt;delete();


		} catch (CDbException &#036;e) {


				&#036;(document).ready(function(){ 


				&#036;('#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

Il mio era codice jquery, non php =)

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.

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

Ciao RobySax.

Dai un’occhiata forse ti puo’ aiutare.

http://www.yiiframework.com/wiki/72/