unchanged
Title
By Example: CHtml
"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:<br> - CHtml::link()- CHtml::button()- CHtml::textField()- CHtml::listData()- CHtml::dropDownList()<br> <a name="link"></a> ## ::## CHtml::link() method ~~~ [php] public static string link(string $text, mixed $url='#', array $htmlOptions=array ( )) ~~~ Generates a hyperlink tag. ***### Example**Example 1: Linking to a controlleractionaction** ~~~ [php] <?php echo CHtml::link('Link Text',array('controller/action')); ?> ~~~#### HTML Output:**HTML Output:** ~~~ [php] <a href="index.php?r=controller/action">Link Text</a> ~~~ ***### Example**Example 2: Linking to a controller action with querystringparametersparameters** ~~~ [php] <?php echo CHtml::link('Link Text',array('controller/action', 'param1'=>'value1')); ?> ~~~#### HTML Output:**HTML Output:** ~~~ [php] <a href="index.php?r=controller/action¶m1=value1">Link Text</a> ~~~ ***### Example**Example 3: Linking to a controller action with multiple querystringparametersparameters** ~~~ [php] <?php echo CHtml::link('Link Text',array('controller/action', 'param1'=>'value1', 'param2'=>'value2', 'param3'=>'value3')); ?> ~~~#### HTML Output:**HTML Output:** ~~~ [php] <a href="index.php?r=controller/action¶m1=value1¶m2=value2¶m3=value3">Link Text</a> ~~~ ***### Example**Example 4: Link opening a newpagepage** ~~~ [php] <?php echo CHtml::link('Link Text',array('controller/action', 'param1'=>'value1'), array('target'=>'_blank'); ?> ~~~#### HTML Output:**HTML Output:** ~~~ [php] <a target="_blank" href="index.php?r=controller/action¶m1=value1">Link Text</a> ~~~ ***### Example**Example 5: Linking to a controller action inside the actualcontrollercontroller** (Suppose you are in the PostController/view and wants to link to PostController/create) Just remove the 'controller' part from the string ~~~ [php] <?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**Example 6: Linking to a controller action from the siterootroot** (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] <?php echo CHtml::link('Link Text',array('/controller/action')); ?> ~~~ This makes more sense if you are working with modules. ***### Example**Example 7: Linking to a controller action from anothermodulemodule** Replace below the module-id with desired module id . ~~~ [php] <?php echo CHtml::link('Link Text',array('/module-id/controller/action')); ?> ~~~ ***### Example**Example 8: Linking to a controller action from the samemodulemodule** This is useful when you want to make absolute paths avoiding to use static module names. ~~~ [php] <?php echo CHtml::link('Link Text',array('/{$this->module->id}/controller/action')); ?> ~~~_ _ <a name="button"></a> ## ::## CHtml::button() method ~~~ public static string button(string $label='button', array $htmlOptions=array ( )) ~~~ Generates a button. ***### Example**Example 1: Connecting a button to a controlleractionaction** ~~~ [php] <?php echo CHtml::button('Button Text', array('submit' => 'controller/action')); ?> ~~~#### HTML Output:**HTML Output:** ~~~ [php] <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> ~~~_ _ <a name="textField"></a> ## ::## CHtml::textField() method ~~~ public static function textField($name,$value='',$htmlOptions=array()) ~~~ Generates a textfield. ***### Example**Example 1: Generating an empty textfield, just with anamename** ~~~ [php] <?php echo CHtml::textField('Text'); ?> ~~~ ***### Example**Example 2: Generating a textfield with name andvaluevalue** ~~~ [php] <?php echo CHtml::textField('Text', 'some value'); ?> ~~~ ***### Example**Example 3: Generating a textfield with customized id, width andmaxlengthmaxlength** ~~~ [php] <?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**Example 4: Generating a disabledtextfieldtextfield** ~~~ [php] <?php echo CHtml::textField('Text', 'some value', array('disabled'=>true); ?> ~~~_ _ <a name="textField"></a> ## ::## CHtml::listData() method ~~~ public static function listData($models,$valueField,$textField,$groupField='') ~~~ Generates data for dropDownList and listBox, using the format $key=>$value. ***### Example**Example 1: Generating a list data forcategoriescategories** ~~~ [php] <?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**HTML Output(Example):(Example):** ~~~ [php] array("1" => "Arts", "2" => "Science", "3" => "Culture"); ~~~ ***### Example**Example 2: Generating an ordered list data for categories using findAllparameterparameter** ~~~ [php] <?php $models = categories::model()->findAll( array('order' => 'category_name')); $list = CHtml::listData($models, 'category_id', 'category_name'); print_r($list); ~~~#### HTML**HTML Output(Example):(Example):** ~~~ [php] array("1" => "Arts", "3" => "Culture", "2" => "Science"); ~~~_ _ <a name="textField"></a> ## ::## 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**Example 1: Generating a simple dropdownlist forgendergender** ~~~ [php] <?php echo CHtml::dropDownList('listname', $select, array('M' => 'Male', 'F' => 'Female')); ~~~ The $select parameter must contain value 'M' or 'F'. ***### Example**Example 2: Generating a simple dropdownlist for gender with an 'empty'element.element.** This example will avoid the dropdownlist to be blank when no value, outputing some proper information to the user ~~~ [php] <?php echo CHtml::dropDownList('listname', $select, array('M' => 'Male', 'F' => 'Female'), array('empty' => '(Select a gender')); ~~~ ***### Example**Example 3: Using data from a modelfunction.function.** It is better to have you gender list definition inside your model definition. At model: ~~~ [php] public function getGenderOptions(){ return array('M' => 'Male', 'F' => 'Female'); } ~~~ At view: ~~~ [php] <?php echo CHtml::dropDownList('listname', $select, $model->genderOptions, array('empty' => '(Select a gender')); ~~~ ***### Example**Example 4: Using data fromdbdb** 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: ~~~ [php] // 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] <?php echo CHtml::dropDownList('categories', $category, $list, array('empty' => '(Select a category')); ~~~ *** You cand find CHtml class atyii/framework/web/helpers/CHtml.php`yii/framework/web/helpers/CHtml.php`##### Links [Russian Version dropDownList()](http://dbhelp.ru/by-example-chtml-dropdownlist/page/) [Russian Version listData()](http://dbhelp.ru/by-example-chtml-listdata/page/) [Russian Version textField()](http://dbhelp.ru/by-example-chtml-textfield/page/) [Russian Version link()](http://dbhelp.ru/by-example-chtml/page/)[Russian Version listData()](http://dbhelp.ru/by-example-chtml-listdata/page/) [Russian Version textField()](http://dbhelp.ru/by-example-chtml-textfield/page/) [Russian Version link()](http://dbhelp.ru/by-example-chtml/page/)