我想在Yii框架中创建一个下拉列表,我有自动生成它的问题
所以我现在有了:
function getYear($value1 = 1900, $value2 = 2008)
{
$data = array();
for ($i=value1; $i++; $i<=value2){
array_push($data,(string)$i);
}
return data();
}
<?php echo CHtml::activeDropDownList($model,'yy', getYear()); ?>
它应该是这样的:
<?php echo $form->dropDownList($model, 'field_name', array(1=>'test1', 2=>'test2'));?>
但是我的代码没有用,所以请帮帮我
答案 0 :(得分:2)
我不熟悉YII框架,但看起来你的函数有一些主要的语法问题。首先,for()
循环中的参数顺序错误。此外,您在$
和$value1
变量前面缺少$value2
,因此它们被解释为空常量。
如果要返回填充了连续年份的数组,可能需要查看本机range()
函数。像这样:
function getYear($value1 = 1900, $value2 = 2008) {
return range($value1, $value2);
}
答案 1 :(得分:2)
你真的不需要一个单独的函数 - 只需像Joe所示那样使用PHP range()函数。
<?php echo $form->dropDownList($model, 'field_name', range(1900,2008);?>
正如ThiefMaster所说 - 最好不要硬编码这些值,所以也许:
<?php
$thisyear = date("Y");
echo $form->dropDownList($model, 'field_name', range($thisyear-100,$thisyear);
?>
这假设您的$ form是CActiveForm类的对象
答案 2 :(得分:0)
将您的函数放在一个类中并将其定义为静态函数,以便您也可以在其他地方使用它。然后静态调用该函数。
class example{
public static function getYear($value1 = 1900, $value2 = 2008)
{
$data = array();
for ($i=value1; $i++; $i<=value2){
array_push($data,(string)$i);
}
return data();
}
}
<?php echo CHtml::activeDropDownList($model,'yy', example::getYear()); ?>