2011-09-22 7 views
1

html로 기본값을 설정하면 다음과 같이이다 : 나는에 노력하고있어젠드 양식 - 내 체크 박스 목록에 대한 다중 체크 박스

<dt id="list-label"> 
    <label for="list" class="optional"> 
     Choose which feeds to include in the mix 
    </label> 
</dt> 

<dd id="list-element"> 
    <label for="list-1"> 
     <input type="checkbox" name="list[]" id="list-1" value="1">Marko Polo 
    </label> 

    <br /> 

    <label for="list-2"> 
     <input type="checkbox" name="list[]" id="list-2" value="2">Jeano Polo 
    </label> 
</dd> 

데이터베이스에서 하나의 값으로 사람들을 위해 = 선택 선택으로 그들을 미리 채울 . 나는 다음과 같이 작동 할 것이라고 생각했다 :

$form->setDefaults(array('list-1'=>1,'list-2'=>1)); 

그러나 그렇지 않다. 이것을 할 수있는 방법이 있습니까?

편집

Here is my form class code: 

      $model = new Admin_Model_Db(); 
      $model->setTableName('graduates'); 
      $gradA = $model->getAllGraduates(); 

      foreach ($gradA as $grad){ 
       if (!empty($grad['twitter'])){ 
        $twitter[$grad['id']] = $grad['firstname'] . ' ' . $grad['lastname']; 
       } 
      } 

      $list = $this->CreateElement('multicheckbox', 'list') 
            ->setLabel('Choose which feeds to include in the mix') 
            ->setRequired(false) 
            ->setMultiOptions($twitter); 
+0

당신은 당신의 폼 클래스 코드에 참여할 수 있을까? 나는 문제가 어디 있는지 알고 있다고 생각하지만 확신하기 위해 그것을 볼 필요가있다. –

답변

2

양식 요소 이름이 list[]입니다, 이것이 당신의 상자가있을 때 것을 의미한다 확인하면 값을 다음과 같이 얻을 수 있습니다.

$list = $form->getElement('list')->getValue(); 

$ 목록의 값이 배열됩니다 (1, 2)

그래서 논리적으로 작동합니다 :

$form->setDefaults(array('list'=>array(1,2)); 
//if not, try with strings instead of integers array('1','2') 
5

이 시도 :

$all_record = array('k1'=>'v1', 'k2'=>'v2'); 
$checked_values = aray('k1'); 

$checkbox = new Zend_Form_Element_MultiCheckbox('id', 
    array('multiOptions' => $all_records) 
); 

$checkbox->setValue($checked_values); 

// ... 

$this->addElement($checkbox); 

$를이 물론 :)의 Zend_Form입니다