Vous êtes sur la page 1sur 7

11/10/12 By Example: CHtml | Wiki | Yii Framework

demos guide class reference wiki extensions forum live chat login

about downloads doc ument at ion development c ommunit y

DOCUMENTATION Take the Tour Tutorials Class Reference Wiki Screencasts Resources

By Example: CHtml 16 Follow @yiifram ew ork 6,079 follow ers

51 followers 63 0 report it Write new article

S E A RCH WI K I
CHtml::link() method
CHtml::button() method Find
CHtml::textField() method
CHtml::listData() method View current article
CHtml::dropDownList() method Update this article
Links View history
View revision
Russian

Written by: jonah


"By Example" cookbook pages will provide coding examples for many of the commonly used classes within Yii.
Updated by: Yang He
We will try to provide as many usage examples as possible for keep these pages as helpful as possible.
Category: Tutorials
Votes: +63
Smarthead will be pulling these from the forum when he is not finding the answers on his own. Please request
Viewed: 152,018 times
examples using the comments below or ask for an example in the forum. Thanks. Created on: Sep 25, 2009
Last updated: Jun 30, 2012
Avaiable methods: Tags: listData, chtml, link, button

CHtml::link()
Related Articles
CHtml::button()
Change buttons on our CGridView
CHtml::textField()
extending yii
CHtml::listData()
using multiple radio button
CHtml::dropDownList()
CButtonColumn: Use special
variable $data for the 'id' in the
'options' of a button
CHtml::link() method
A simple go back button widget
htmlOptions explained for various
public static string link(string $text, mixed $url='#', array $htmlOptions=array ( )) controls.

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',

www.yiiframework.com/wiki/48/by-example-chtml/ 1/7
11/10/12 By Example: CHtml | Wiki | Yii Framework

'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 idlink
parameter below is a GET type parameter (submit URL will be something like
http://example.com/post/delete/id/100).

www.yiiframework.com/wiki/48/by-example-chtml/ 2/7
11/10/12 By Example: CHtml | Wiki | Yii Framework

<?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::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

www.yiiframework.com/wiki/48/by-example-chtml/ 3/7
11/10/12 By Example: CHtml | Wiki | Yii Framework

<?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())

www.yiiframework.com/wiki/48/by-example-chtml/ 4/7
11/10/12 By Example: CHtml | Wiki | Yii Framework

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.

www.yiiframework.com/wiki/48/by-example-chtml/ 5/7
11/10/12 By Example: CHtml | Wiki | Yii Framework

If you need to generate dropdownlist using both optgroupand optiontags 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.

Links

Russian
Russian Version dropDownList()
Russian Version listData()
Russian Version textField()
Russian Version link()

Total 3 comments

#7592 DerKaktus at 2012/04/01 07:35pm 0 0 report it

Button with confirmation

CHtml::button('Delete',
array('submit' => array('user/delete','id'=>$model->usId),
'name'=>'btnDelete',
'confirm'=>'Are you sure you want to delete?',
'class'=>'btn btn-large btn-danger',
'style'=>'width:160px;'
));

#4263 hasanavi at 2011/06/21 06:42am 0 0 report it

Want more

This is a great Wiki, Want more something like this.

#3074 junxiong at 2011/03/14 03:23am 0 0 report it

Link with confiirmation

I think we also need to add link with confirmation, especially in delete condition

www.yiiframework.com/wiki/48/by-example-chtml/ 6/7
11/10/12 By Example: CHtml | Wiki | Yii Framework

CHtml::link(t("Delete"), "#", array("submit"=>array("delete","id"=>"$model->id"


),"confirm"=>"Are you sure?"));

Leave a comment
Please login to leave your comment.

About Downloads Documentation Yii Supporters


About Yii Framework Take the Tour
Features Extensions Tutorials
Clevertech supports Yii. Clevertech builds custom solutions to cut
Performance Demos Class Reference
overhead, create relevant management reporting and deliver profits.
License Logo Wiki
Contact Us Screencasts The Ext4Yii Framework is a professional PHP Yii extension which
Resources provides server-side ExtJS functionality.

Development Community
Contribute to Yii Forum
Latest Updates Live Chat
Report a Bug News
Report a Security Issue Hall of Fame
Badges

Terms
Twof
itter
Service
Facebook
| License
LinkedIn| RSS
Contact Us
Copyright 2012 by Yii Softw are LLC. Feeds
All Rights Reserved.

www.yiiframework.com/wiki/48/by-example-chtml/ 7/7

Vous aimerez peut-être aussi