2012-02-26 24 views
0

我想創建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'));?> 

,但我的代碼不能正常工作,請幫助我

+1

我希望那不是生日。如果是這樣:請不要硬編碼年。 15年後,2008年出生的人可能會很好地使用您的網站,而且沒有人會記得更新硬編碼年份的機會。但是,當然這個網站不會再存在或者至少在15年內至少被重寫過一次。 – ThiefMaster 2012-02-26 19:30:56

+0

我是這個網站的所有者,所以我會每年更新一次。我需要解決這個問題,所以請幫助我 – Irakli 2012-02-26 19:35:05

回答

2

你真的不需要一個單獨的功能 - 只需使用PHP範圍()函數喬顯示。

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

這是假設你的$形式是類CActiveForm的對象

2

我不熟悉w ^在YII框架中,但它看起來像你的函數有一些主要的語法問題。首先,for()循環中的參數順序錯誤。此外,您在$value1$value2變量前缺少$,因此它們被解釋爲空常量。

如果你想返回一個填充連續年份的數組,你可能想看看原生range()函數。就像這樣:

function getYear($value1 = 1900, $value2 = 2008) { 
    return range($value1, $value2); 
} 
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()); ?>