Extending CJuiDialog

You are viewing revision #1 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.

next (#2) »

Sometimes you have CJuiDialog with different content but same buttons (or width, height). If you don't want to repeat yourself this is a great solution:

Create:

> extensions/dialog/start.php

In start.php write:

Yii::import('zii.widgets.jui.CJuiDialog');
class Start extends CJuiDialog
{
         
        public function init()
        { 
                
                $options=$this->options;
                
                $options['buttons']=array(
                     'Save'=>'js:function(){alert("alert one");}',      
                     'Cancel'=>'js:function(){alert("alrt two");}', 
                );
           
                $this->options=$options;
                parent::init();

         }

}         

Somewhere (in views) create:

$this->beginWidget('ext.dialog.start', array(
                                        'id'=>'dialog',
                                        'options'=>array(
                                                 'title'=>'Title',
                                                 'autoOpen'=>false,
                                                 'modal'=>true,
                                                 'width'=>320,
                                                 'resizable'=>false,
                                                 'height'=>'auto',
                                        )
                        ));                                     
                                                                        
  
 $this->renderPartial('view_file');
 
 $this->endWidget(); 

And that's it. You will have buttons Save and Cancel everytime.