-->

Membuat fungsi yang dipakai semua controller pada yii

Sedikit tips saja bagi yang sering menggunakan yii..

Jika kita menggunakan fungsi yang sering diulang - ulang misalnya dalam sebuah datepicker dengan menggunakan CJuiDatePicker pastinya kita akan  menuliskan menggunakan dengan seperti ini :


$this->widget('zii.widgets.jui.CJuiDatePicker',
 array(
  // you must specify name or model/attribute
  //'model'=>$model,
  //'attribute'=>'projectDateStart',
  'name'=>'Project[projectDateStart]',

  // optional: what's the initial value/date?
  //'value' => $model->projectDateStart
  'value' => '08/20/2010',

  // optional: change the language
  //'language' => 'de',
  //'language' => 'fr',
  //'language' => 'es',
  'language' => 'pt-BR',

  /* optional: change visual
   * themeUrl: "where the themes for this widget are located?"
   * theme: theme name. Note that there must be a folder under themeUrl with the theme name
   * cssFile: specifies the css file name under the theme folder. You may specify a
   *          single filename or an array of filenames
   * try http://jqueryui.com/themeroller/
  */
  'themeUrl' => Yii::app()->baseUrl.'/css/jui' ,
  'theme'=>'pool', //try 'bee' also to see the changes
  'cssFile'=>array('jquery-ui.css' /*,anotherfile.css, etc.css*/),


  //  optional: jquery Datepicker options
  'options' => array(
   // how to change the input format? see http://docs.jquery.com/UI/Datepicker/formatDate
   'dateFormat'=>'mm/dd/yy',

   // user will be able to change month and year
   'changeMonth' => 'true',
   'changeYear' => 'true',

   // shows the button panel under the calendar (buttons like "today" and "done")
   'showButtonPanel' => 'true',

   // this is useful to allow only valid chars in the input field, according to dateFormat
   'constrainInput' => 'false',

   // speed at which the datepicker appears, time in ms or "slow", "normal" or "fast"
   'duration'=>'fast',

   // animation effect, see http://docs.jquery.com/UI/Effects
   'showAnim' =>'slide',
  ),


  // optional: html options will affect the input element, not the datepicker widget itself
  'htmlOptions'=>array(
  'style'=>'height:30px;
   background:#ffbf00;
   color:#00a;
   font-weight:bold;
   font-size:0.9em;
   border: 1px solid #A80;
   padding-left: 4px;'
  )
 )
);
Nah misalnya kita ingin membuat fungsi tersebut dapat dipakai terus tanpa harus menuliskan keseluruhan kode tersebut kita dapat mengakalinya dengan menuliskannya di Components/Controller.php
nah di Controller buat fungsi sebagai berikut :


public function createDatePicker($model,$attribute){
  $m=get_class($model);
  $t=$m.'['.$attribute.']';//ingat id dan name dari form ternyata formatnya dikasih model[nama_atribute]
  $this->widget('zii.widgets.jui.CJuiDatePicker',array(
     'name'=>$t,
     'model'=>$model,
     'value'=>$model->$attribute,

     'options'=>array(
             'showAnim'=>'fold',
       'dateFormat' => 'yy-mm-dd', // save to db format
       'themeUrl' => Yii::app()->baseUrl.'/css/jui' ,

             'theme'=>'pool', //try 'bee' also to see the changes

             'cssFile'=>array('jquery-ui.css' /*,anotherfile.css, etc.css*/),

     ),
        'htmlOptions'=>array(
            'style'=>'height:20px;'
     ),
    )
  );
Nah setelah itu tinggal digunakan di view kita deh tinggal panggil fungsi tersebut daripada harus membuat satu per satu
<div class="row">
  <?php echo $form->labelEx($model,'end_time_planned'); ?>
  <?php echo $this->createDatePicker($model,'end_time_planned'); ?>
  <?php echo $form->error($model,'end_time_planned'); ?>
 </div>
Yup simple kan tinggal gunakan fungsi tersebut di form yang kita inginkan..

Pada dasarnya kita membuat fungsi di class super dari masing - masing controller yang ada di  project kita. Karena semua Controller yang kita buat mengextends Controller yang ada di Components/Controller.php. Yap itu mungkin sekedar trik aja..




Facebook Comments

2 komentar