генерировать массив автоматически - PullRequest
0 голосов
/ 26 февраля 2012

Я хочу создать раскрывающийся список в Yii Framework, и у меня возникла проблема с его автоматическим созданием

так что теперь у меня есть:

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

но мой код не работает, поэтому, пожалуйста, помогите мне

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

Вам действительно не нужна отдельная функция - просто используйте функцию 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);
?>

Предполагается, что ваша форма $ является объектом класса CActiveForm

2 голосов
/ 27 февраля 2012

Я не знаком с фреймворком YII, но похоже, что у вашей функции есть некоторые серьезные синтаксические проблемы. Во-первых, параметры в вашем цикле for() находятся в неправильном порядке. Кроме того, вы пропускаете $ перед переменными $value1 и $value2, поэтому они интерпретируются как пустые константы.

Если вы хотите вернуть массив, заполненный последовательными годами, вы можете проверить встроенную функцию range(). Как это:

function getYear($value1 = 1900, $value2 = 2008) {
    return range($value1, $value2);
}
0 голосов
/ 27 февраля 2012

Поместите свою функцию в класс и определите ее как статическую функцию, чтобы вы могли использовать ее и в других местах. А затем вызовите функцию статически.

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