使用Yii框架CHtml助手生成城市下拉选择框

yii框架中CHtml类库主要负责协助我们使用优雅的方法生成HTML代码,例如:下拉选择列表框,完整的代码如下:

<select name=”provices”>
    <option value=”1”>北京</option>
    <option value=”2” selected=”selected”>上海</option>
    <option value=”3”>天津</option>
    <option value=”4”>武汉</option>
</select>
以上的结构,如果不使用助手,我们可能会使用以下的方法实现:

/** Controller: **/
$provices = array(
	1 => '北京',
	2 => '上海',
	3 => '天津',
	4 => '武汉'
);
$this->render( 'view', array( 'provices' => $provices, 'selected' => 2 );


/** View **/
if ( isset($provices) && $provices ):
    echo “<select name=\”provices\”>”;
    foreach ( $provices as $val => $title ):
	 if ( $val != $selected ) {
            echo “<option value=\””, $val, “\”>”, $title, “</option>”;
	}
	else {
	     echo “<option value=\””, $val, “\” selected=\”selected\”>”, $title, “</option>”;
	}
    endforeach;
    echo “</select>”;
endif;

如此的代码,不但臃肿而且容易写错,这样的代码还显得不够酷。

/** Controller **/
$provices = array(
	1 => '北京',
	2 => '上海',
	3 => '天津',
	4 => '武汉'
);
$this->render( 'view', array( 'provices' => $provices, 'selected' => 2 );

/** View **/
echo CHtml::dropDownList( 'provices', $selected, $provices );
怎么样?如此一来代码是不是清爽了不了?很酷吧?如果需要自定义 id class 属性,还可以写成以下的形式:

echo CHtml::dropDownList( 'provices', $selected, $provices, array( 'id' => 'provices', 'class' => 'g-left') );


程序的完全说明如下:

publicstatic string dropDownList(string$name, string $select, array $data, array $htmlOptions=array ( ))

$name

string

下拉列表的名称

$select

string

被选中的值

$data

array

用来生成列表选项的数据(=>显示).你可以使用listData来生这个数据。请参考listOptions来了解这个数据如何生成列表选项。注意,这个方法会自动的将值和标签HTML编码。

$htmlOptions

array

附加的HTML属性。除了正常的HTML属性外,一些特殊的属性也是可以的(请参阅clientChangetag来了解更多详细信息。)此外,下面这些选项也被下拉列表所支持:

encode:布尔值,指定是否对值进行编码。默认为true

prompt:字符串,指定作为第一个列表项的提示文本,它的值是空的。注意,提示文本不会被HTML编码。

empty:字符串,指定空选项的文本,它的值是空的。‘empty’选项也可以是一个值-标签对的数组。每一对都将在一开始渲染为一个列表选项。注意,文本标签不会被HTML编码。

options:数组,每个option标签的指定附加属性。数组的键名必须是option的值,数组的键值是option标签的附加的属性。例如,

array(
'value1'=>array('disabled'=>true,'label'=>'value 1'),

'value2'=>array('label'=>'value2'),

);


{return}

string

生成的下拉列表


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yagas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值