Contoh Menggunakan CHtml di YII

Berikut adalah contoh singkat penggunaan CHtml di YII yang saya kutip langsung dari situs resmi nya : http://www.yiiframework.com/ , cekidot .!!
"By Example" cookbook pages will provide coding examples for many of the commonly used classes within Yii. We will try to provide as many usage examples as possible for keep these pages as helpful as possible.
Smarthead will be pulling these from the forum when he is not finding the answers on his own. Please request examples using the comments below or ask for an example in the forum. Thanks.

Avaiable methods:
  • CHtml::link()
  • CHtml::ajaxLink()
  • CHtml::button()
  • CHtml::textField()
  • CHtml::listData()
  • CHtml::dropDownList()

CHtml::link() method 

public static string link(string $text, mixed $url='#', array $htmlOptions=array ( ))
Generates a hyperlink tag.

Example 1: Linking to a controller action
<?php echo CHtml::link('Link Text',array('controller/action')); ?>
HTML Output:
<a href="index.php?r=controller/action">Link Text</a>

Example 2: Linking to a controller action with querystring parameters
<?php echo CHtml::link('Link Text',array('controller/action',
                                         'param1'=>'value1')); ?>
HTML Output:
<a href="index.php?r=controller/action&param1=value1">Link Text</a>

Example 3: Linking to a controller action with multiple querystring parameters
<?php echo CHtml::link('Link Text',array('controller/action',
                                         'param1'=>'value1',
                                         'param2'=>'value2',
                                         'param3'=>'value3')); ?>
HTML Output:
<a href="index.php?r=controller/action&param1=value1&param2=value2&param3=value3">Link Text</a>

Example 4: Link opening a new page
<?php echo CHtml::link('Link Text',array('controller/action',
                   'param1'=>'value1'), array('target'=>'_blank'); ?>
HTML Output:
<a target="_blank" href="index.php?r=controller/action&param1=value1">Link Text</a>

Example 5: Linking to a controller action inside the actual controller (Suppose you are in the PostController/view and wants to link to PostController/create)
Just remove the 'controller' part from the string
<?php echo CHtml::link('Link Text',array('action')); ?>
If you are linking to an action from another controller, use the syntax of the former examples.

Example 6: Linking to a controller action from the site root (Suppose you are inside a module and wants to make the link from a controller of the root application)
In this case, add an slash "/" at the start of the string url
<?php echo CHtml::link('Link Text',array('/controller/action')); ?>
This makes more sense if you are working with modules.

Example 7: Linking to a controller action from another module
Replace below the module-id with desired module id .
<?php echo CHtml::link('Link Text',array('/module-id/controller/action')); ?>

Example 8: Linking to a controller action from the same module
This is useful when you want to make absolute paths avoiding to use static module names.
<?php echo CHtml::link('Link Text',array('/{$this->module->id}/controller/action')); ?>

Example 9: Linking to a controller action via POST with confirmation dialog
Delete actions created using gii require the delete request be sent via POST to help prevent deleting objects by accident. Below is an example how to create a link that sends the request via POST and also asks for confirmation. Where you are redirected after the delete depends on your delete action. Note that the id link parameter below is a GET type parameter (submit URL will be something likehttp://example.com/post/delete/id/100).
<?php echo CHtml::link('Delete',"#", array("submit"=>array('delete', 'id'=>$data->ID), 'confirm' => 'Are you sure?')); ?>
If you are using CSRF protection in your application do not forget to add csrf parameter to the htmlOptions array.
<?php echo CHtml::link('Delete',"#", array("submit"=>array('delete', 'id'=>$data->ID), 'confirm' => 'Are you sure?', 'csrf'=>true)); ?>

Example 10: Linking to a controller action via POST with POST parameters
If you need to make POST request with arbitary link with additional POST parameters you should use following code (submit URL will be something like http://example.com/blog/deletePost/param/100).
<p><?php echo lnk('Delete blog post', '#', array(
    'submit'=>array('blog/deletePost', 'param'=>100),
    'params'=>array('id'=>$post->id, 'status'=>Post::STATUS_DELETED_BY_OWNER),
    'csrf'=>true,
)); ?></p>

CHtml::ajaxLink() method 

Syntax:
public static string ajaxLink(string $text, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( ))
Default example
echo CHtml::ajaxLink(
    $text = 'Click me', 
    $url = '/', 
    $ajaxOptions=array (
        'type'=>'POST',
        'dataType'=>'json',
        'success'=>'function(html){ jQuery("#your_id").html(html); }'
        ), 
    $htmlOptions=array ()
    );
Example #1 : Ajax request using ajaxLink
//In view:
 
echo CHtml::ajaxLink(
    'Test request',          // the link body (it will NOT be HTML-encoded.)
    array('ajax/reqTest01'), // the URL for the AJAX request. If empty, it is assumed to be the current URL.
    array(
        'update'=>'#req_res'
    )
);
 
echo '<div id="req_res">...</div>';
 
 
//In controller
public function actionReqTest01() {
    echo date('H:i:s');
    Yii::app()->end();
}
Example #2 : Ajax request using ajaxLink with loading image
//In view:
echo CHtml::ajaxLink(
    'Test request',          // the link body (it will NOT be HTML-encoded.)
    array('ajax/reqTest01Loading'), // the URL for the AJAX request. If empty, it is assumed to be the current URL.
    array(
        'update'=>'#req_res_loading',
        'beforeSend' => 'function() {           
           $("#maindiv").addClass("loading");
        }',
        'complete' => 'function() {
          $("#maindiv").removeClass("loading");
        }',        
    )
);
 
echo '<div id="req_res_loading">...</div>';
 
 
//In controller:
public function actionReqTest01Loading() {
       sleep(4);   // Sleep for 4 seconds just to demonstrate the Loading Image can be seen, for learning purpose only      
       echo date('H:i:s');
    Yii::app()->end();
}
Reference: Ajaxlink

CHtml::button() method 

public static string button(string $label='button', array $htmlOptions=array ( ))
Generates a button.

Example 1: Connecting a button to a controller action
<?php echo CHtml::button('Button Text', array('submit' => array('controller/action'))); ?>
HTML Output:
<input id="yt0" type="button" value="Button Text" name="yt0"/>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(document).ready(function() {
             jQuery('#yt0').click(function( {
                            jQuery.yii.submitForm(
                                     this,
                                     'controller/action',{}
                                          );return false;});
                                  });
/*]]>*/
</script>

CHtml::textField() method 

public static function textField($name,$value='',$htmlOptions=array())
Generates a textfield.

Example 1: Generating an empty textfield, just with a name
<?php echo CHtml::textField('Text'); ?>

Example 2: Generating a textfield with name and value
<?php echo CHtml::textField('Text', 'some value'); ?>

Example 3: Generating a textfield with customized id, width and maxlength
<?php echo CHtml::textField('Text', 'some value',
 array('id'=>'idTextField', 
       'width'=>100, 
       'maxlength'=>100); ?>
*Note: use 'cols' instead of 'width' when working with textareas

Example 4: Generating a disabled textfield
<?php echo CHtml::textField('Text', 'some value', 
    array('disabled'=>'disabled'); ?>

CHtml::listData() method 

public static function listData($models,$valueField,$textField,$groupField='')
Generates data for dropDownList and listBox, using the format $key=>$value.

Example 1: Generating a list data for categories
<?php 
     /*you can use here any find method you think 
     proper to return your data from db*/
     $models = categories::model()->findAll();
 
     // format models resulting using listData     
     $list = CHtml::listData($models, 
                'category_id', 'category_name');    
 
     print_r($list);
HTML Output (Example):
array("1" => "Arts", "2" => "Science", "3" => "Culture");

Example 2: Generating an ordered list data for categories using findAll parameter
<?php 
     $models = categories::model()->findAll(
                 array('order' => 'category_name'));
 
     $list = CHtml::listData($models, 
                'category_id', 'category_name');    
 
     print_r($list);
HTML Output (Example):
array("1" => "Arts", "3" => "Culture", "2" => "Science");

CHtml::dropDownList() method 

public static function dropDownList($name,$select,$data,$htmlOptions=array())
Generates a dropdown list.
$name: A name for the dropdownList; $select: selected item from the $data $data: an array of the type $key => $value (the possible values of you dropdownlist); $htmlOptions: another options.

Example 1: Generating a simple dropdownlist for gender
<?php echo CHtml::dropDownList('listname', $select, 
              array('M' => 'Male', 'F' => 'Female'));
The $select parameter must contain value 'M' or 'F'.

Example 2: Generating a simple dropdownlist for gender with an 'empty' element.
This example will avoid the dropdownlist to be blank when no value, outputing some proper information to the user
<?php echo CHtml::dropDownList('listname', $select, 
              array('M' => 'Male', 'F' => 'Female'),
              array('empty' => '(Select a gender)'));

Example 3: Using data from a model function.
It is better to have you gender list definition inside your model definition.
At model:
public function getGenderOptions(){
    return array('M' => 'Male', 'F' => 'Female');
}
At view:
<?php echo CHtml::dropDownList('listname', $select, 
              $model->genderOptions,
              array('empty' => '(Select a gender'));

Example 4: Using data from db
In order to create a dropdownList with data from db, you have to combine it with listData method that will format models from db into array of $key=>$value.
This part is equal to listData Example 2:
// retrieve the models from db
$models = categories::model()->findAll(
                 array('order' => 'category_name'));
 
// format models as $key=>$value with listData
$list = CHtml::listData($models, 
                'category_id', 'category_name');
Now, we generate our dropdowList from the $list variable
<?php echo CHtml::dropDownList('categories', $category, 
              $list,
              array('empty' => '(Select a category'));
Example 5: Generating dropdownlist with option groups.
If you need to generate dropdownlist using both optgroup and option tags use the following code.
<div class="cars-select">
    <?php echo CHtml::dropDownList('Cars', 'car_id', array(
        'Mazda'=>array(
            'mazda-rx7'=>'RX7',
            'mazda-rx5'=>'RX5',
        ),
        'Volvo'=>array(
            'volvo-b9tl'=>'B9TL',
            'volvo-l90e-radlader'=>'L90E Radlader',
        ),
    )); ?>
</div>
Code above should generate following HTML.
<div class="cars-select">
    <select name="Cars" id="Cars">
        <optgroup label="Mazda">
            <option value="mazda-rx7">RX7</option>
            <option value="mazda-rx5">RX5</option>
        </optgroup>
        <optgroup label="Volvo">
            <option value="volvo-b9tl">B9TL</option>
            <option value="volvo-l90e-radlader">L90E Radlader</option>
        </optgroup>
    </select>
</div>

You can find CHtml class at yii/framework/web/helpers/CHtml.php view on Github, all CHtml methods here.

10 komentar:

  1. SALAM KOMPAK SELALU….dan selamat buat yg JUPE hari ini.
    KALAU ANDA INGGIN MAU TAU INFO TOGEL, KENAL,KAN NAMA AWA IBU RAHMA, KAMI TINGGAL SARAWAK PEKERJAAN USAHA KECI-KECI LAH, DAN TUKAN MASAK DI RESTORAN ,SELAMA KAMI KENAL YANG NAMANYA AKI SOLEH NASIB KAMI TIDAK SEPERTI YANG DULUH… KAMI SANGAT BERTERIMA KASIH KEPADA KY SOLEH BERKAT ANGKA YANG DI BAGI SAMA BELIAU.DAN ALHAMDULILLAH TEMBUS.DAN KAMI MINTAH ANGKA,4D...5D…DAN 6D…

    ANGKA NAIK YAITU,DI.
    SPORTS,TOTO 4D,5D, 6D , 4-5-0-6-0-7
    SIAPA TAU AWA SEMUA MAU SILAH KAN GABUNG SAMA KAMI,DI BOCORAN RAMALAN TOGEL,AKI SOLEH…

    DAN KAMI BERSUKUR HASIL PASANG TOGEL TGL,25,05 ,2014…
    ….
    SEMUA UTANG UTANG DLM KELUARGA KAMI KINI DPT TERLUNASI SEMUA,KAMI PUN BISAH MEMBUKA USAHA KEMBALI,WALAUPUN ITU DGN CARA PASANG TOGEL, ITU MERUPAKAN RESKI BAGI KAMI SE- KELUARGA ,JADI YG SERING KALAH DLM PERMAINAN TOGEL HUBUNGI AKI/SMS KE NMR INI,082-313-336-747—KESUSAHAN ANDA DALAM MAIN
    TOGEL DI,JAMIN [3] KALI PUTARAN…
    ATAU, KUNGJUNGGI, BLOG, AKI SOLEH…

    klik http://prediksitogel747.blogspot.com

    DAN SUKUR ALHANDULILLA MENANG LAGI,…
    Terima kasih yang amat dalam kami ucapkan kepada AKI SOLEH yang telah memberikan kebahagian bagi keluarga kami…berkat Beliau kami sekarang udah hidup tenang..sudah tidak di kejar-kejar hutang …Kami di berikan Angka Ritual Ghoib Dari AKI SOLEH yang sangat sangat Jitu 100%…hingga kami sekarang merasa tenang lagi…terima kasih AKI …Jika Anda ada yang merasa kesulitan masalah Nomer Toto apaka 2D.3D.4D.5D.6D.itu semua terserah anda, silahkan HBG ATAU SMS Aja Pada AKI SOLEH…di nmr hpnya [082-313-336-747] pasti anda akan merasakan apa yg selama ini kami rasakan…Salam Bahagia dan Sukses..!!

    DENGAN ANGKA GOIB ,ATAU ANGKA RITUAL// ANGKA MAHLUK HALUS….

    angka GHOIB: singapur 2D/3D/4D/

    angka GHOIB: hongkong 2D/3D/4D/

    angka GHOIB; malaysia

    angka GHOIB; toto magnum 4D/5D/6D/

    angka GHOIB; laos

    angka ritual gaib kuda lari

    TOTO, 2D, 3D, 4D, 5D, 6D…
    SUPREME TOTO 6/58,/MEGA TOTO,6/52,POWER TOTO 6/55…
    MEKNUM 4D,/STS,/88,/DA MA CAI 1+3D,/ DAN LAIN-LAIN parah pencinta togel.
    DAN LAIN-LAIN,ITU SEMUA TERGANTUNG PERMINTAAN KAMI…ATAU SEPESIAL DEROH 4D ANGKA RITUAL ADA PADA AKI SOLEH…..

    Di jamin anda pasti menang seperti kami >>>>>>

    BalasHapus
  2. Dukun sakti mantra Guna sangat di kenal dan diakui di tengah kalangan masayarakat, yang mempunyai 1001 Ahli Seperti : Cepat KAYA ( Pesugihan ) Melumpuhkan Pesaingan Bisnis Mempunyai barang antik, bias membuat tubuh jadi kebal Dan minyak gaib, yang biasa di sebut, minyak bintang Mengobati Segalah Penyakit Yang Berupa ILMU HITAM ( DLL ) Tuntaskan Masalah Yg Membebani anda Karena Tampah Usaha Tujuan Tak akan Tercapai Mohon Perhatian..!! Sehubungan dengan banyaknya pihak-pihak yang tidak bertanggung jawab yg mengatasnamakan ki & mengeruk keuntungan Pribadi dengan menjual nama . maka dengan ini aki beritahukan kepada semua Pasien & calon pasien baru bahwa NO HP YANG ASLI ADALAH KI SANTANU 082317877775 yang asli adalah yg terterah diatas , agar lebih afdol kirannya selain menelpon langsung, anda diharuskan juga mengirim maksud & tujuan ke Nomor telpon di bawa ini,082317877775

    BalasHapus
  3. CHtml apa ya gan ? binggung mas

    BalasHapus
  4. kami sekeluarga tak lupa mengucapkan puji syukur kepada ALLAH S,W,T dan terima kasih banyak kepada AKII atas nomor togel.nya yang AKI berikan 4 angkah 5602 alhamdulillah ternyata itu benar2 tembus AKI. dan alhamdulillah sekarang saya bisa melunasi semua utan2 saya yang ada sama tetangga.dan juga BANK BRI dan bukan hanya itu AKI. insya allah saya akan coba untuk membuka usaha sendiri demi mencukupi kebutuhan keluarga saya sehari-hari itu semua berkat bantuan AKI.. sekali lagi makasih banyak ya AKI… bagi saudara yang suka main togel .
    yang ingin merubah nasib seperti saya silahkan hubungi AKII DEWA dino:,,085293577799,,atau KLIK DISINI insya allah anda bisa seperti saya…menang togel 175 juta, wlovealam.

    dijamin 100% jebol saya sudah buktikan…sendiri….

    Apakah anda termasuk dalam kategori di bawah ini !!!!

    1″Dikejar-kejar hutang

    2″Selaluh kalah dalam bermain togel

    3″Barang berharga anda udah habis terjual Buat judi togel

    4″Anda udah kemana-mana tapi tidak menghasilkan solusi yg tepat

    5″Udah banyak Dukun togel yang kamu tempati minta angka jitunya
    tapi tidak ada satupun yang berhasil..

    Solusi yang tepat jangan anda putus aza….AKII DEWA akan membantu
    anda semua dengan Angka ritwal/GHOIB:
    butuh angka togel 2D3D4D SGP / HKG / MALAYSIA / TOTO MAGNUM / dijamin 100% jebol
    Apabila ada waktu
    silahkan Hub: AKII DEWA DI NO: (((085293577799)))

    angka GHOIB: singapur 2D/3D/4D/

    angka GHOIB: hongkong 2D/3D/4D/

    angka GHOIB; malaysia

    angka GHOIB; toto magnum 4D/5D/6D/

    angka GHOIB; laos

    BalasHapus
  5. Apakah anda
    Termasuk dalam Kategori Ini
    1. Di Lilit Hutang
    2. Selalu kalah Dalam Bermain Togel
    3. Barang berharga Anda udah Habis Buat Judi Togel
    4. Anda Udah ke mana-mana tapi tidak menghasilkan Solusi yang tepat Jangan Anda Putus Asa…Anda udah berada Di blog yang sangat Tepat..Kami akan membantu anda semua dengan Angka Ritual Kami..Anda Cukup Mengg
    Anti Biaya Ritual Angka Nya Saja…
    Jika anda Membutuhkan Angka Ghoib Hasil Ritual Dari KI RADENG TUJUH, 2D,3D,4D di jamin Tembus
    Silahkan:
    Hub:KI RADEN TUJUH
    (082393992422)

    BalasHapus
  6. Apakah anda
    Termasuk dalam Kategori Ini
    1. Di Lilit Hutang
    2. Selalu kalah Dalam Bermain Togel
    3. Barang berharga Anda udah Habis Buat Judi Togel
    4. Anda Udah ke mana-mana tapi tidak menghasilkan Solusi yang tepat Jangan Anda Putus Asa…Anda udah berada Di blog yang sangat Tepat..Kami akan membantu anda semua dengan Angka Ritual Kami..Anda Cukup Mengg
    Anti Biaya Ritual Angka Nya Saja…
    Jika anda Membutuhkan Angka Ghoib Hasil Ritual Dari KI RADENG TUJUH, 2D,3D,4D di jamin Tembus
    Silahkan:
    Hub:KI RADEN TUJUH
    (082393992422)

    BalasHapus
  7. Apakah anda
    Termasuk dalam Kategori Ini
    1. Di Lilit Hutang
    2. Selalu kalah Dalam Bermain Togel
    3. Barang berharga Anda udah Habis Buat Judi Togel
    4. Anda Udah ke mana-mana tapi tidak menghasilkan Solusi yang tepat Jangan Anda Putus Asa…Anda udah berada Di blog yang sangat Tepat..Kami akan membantu anda semua dengan Angka Ritual Kami..Anda Cukup Mengg
    Anti Biaya Ritual Angka Nya Saja…
    Jika anda Membutuhkan Angka Ghoib Hasil Ritual Dari KI RADENG TUJUH, 2D,3D,4D di jamin Tembus
    Silahkan:
    Hub:KI RADEN TUJUH
    (082393992422)

    BalasHapus
  8. Silahkan:
    Hub:KI RADEN TUJUH
    (082393992422)
    Semua Biaya yang anda keluarkan, tidak sebanding dengan angka yang kami berikan kepada anda…Tapi ingat setelah anda succes dengan angka ritual kami..sisikan
    sedikit bua t orang yang membutuhkan nya…!!! Dan Untuk Bisa Mendapatkan semua Angka kami silahkan Anda :
    TLP :
    (082393992422)) KI RADENG TUJIUH

    BalasHapus
  9. Silahkan:
    Hub:KI RADEN TUJUH
    (082393992422)
    Semua Biaya yang anda keluarkan, tidak sebanding dengan angka yang kami berikan kepada anda…Tapi ingat setelah anda succes dengan angka ritual kami..sisikan
    sedikit bua t orang yang membutuhkan nya…!!! Dan Untuk Bisa Mendapatkan semua Angka kami silahkan Anda :
    TLP :
    (082393992422)) KI RADENG TUJIUH

    BalasHapus
  10. Silahkan:
    Hub:KI RADEN TUJUH
    (082393992422)
    Semua Biaya yang anda keluarkan, tidak sebanding dengan angka yang kami berikan kepada anda…Tapi ingat setelah anda succes dengan angka ritual kami..sisikan
    sedikit bua t orang yang membutuhkan nya…!!! Dan Untuk Bisa Mendapatkan semua Angka kami silahkan Anda :
    TLP :
    (082393992422)) KI RADENG TUJIUH

    BalasHapus

Diberdayakan oleh Blogger.