2012-02-01 52 views
0

我使用Zend框架的形式, 我在Zend Framework的新手,我想展示我的複選框的形式是這樣的: -Zend的形式發行

*SK336 
    *CP 
    *PES 
    *JCP 
    *BGH 
*SK996 
    *KO 
    *RTY 
    *HGR 
*SK547 
    *GPK 
*SK478 
    *JUP 

記下: - *是檢查-box這裏

我試圖在這裏: -

public function init() 
{ 

    $parents = array(); 
    $childs = array(); 
    foreach ($this->Tagkey as $aResultDataValue) { 
        $parents [$aResultDataValue['parent']] = $aResultDataValue['parent']; 
        $childs [$aResultDataValue['parent']][] = $aResultDataValue['child']; 
    } 


    foreach ($parents as $parent){ // print_r ($parents); die(); 
    $tags = new Zend_Form_SubForm(); 
    $tags->addElements(array( 
    new Zend_Form_Element_MultiCheckbox('parent', array(
        'multiOptions' => array($parent), 
        'filters'  => array('StringTrim'), 
        'validators' => array(
        array('InArray', 
          false, 
          array($parent)) 
         ) 

     )), 
     )); 
    foreach ($childs as $child){ 
    $tags->addElements(array(
    new Zend_Form_Element_MultiCheckbox('child', array(
      'multiOptions' => array($child), 
      'filters'  => array('StringTrim'), 
      'validators' => array(
        array('InArray', 
          false, 
          $child) 
         )  
     )), 
     )); 
    } 

    $this->addSubForms(array(
    'tags' => $tags, 
     ) 
    ); 
    } 

我能夠在任何.php頁面創建這種類型的結構,但不能夠做到這一點,現在在Zend公司框架形式,我在這裏使用zend子表單。

而且我得到了一個錯誤,現在,當我使用此查詢

警告:用htmlspecialchars()預計參數1是字符串數組在/ var/WWW/dashboard_campaign /庫/的Zend /搜索/摘要給出.PHP上線905

More Information關於我的問題: -

(1)MySQL的qyery

select b.tagCode parent,a.tagCode child from tag a, tag b where a.tagParentId=b.tagId 

(2)Zend_Debug的輸出::轉儲($這 - > Tagkey);

array(9) { 
    [0] => array(2) { 
    ["parent"] => string(5) "SK336" 
    ["child"] => string(2) "CP" 
    } 
    [1] => array(2) { 
    ["parent"] => string(5) "SK336" 
    ["child"] => string(3) "PES" 
    } 
    [2] => array(2) { 
    ["parent"] => string(5) "SK336" 
    ["child"] => string(3) "JCP" 
    } 
    [3] => array(2) { 
    ["parent"] => string(5) "SK996" 
    ["child"] => string(2) "KO" 
    } 
    [4] => array(2) { 
    ["parent"] => string(5) "SK996" 
    ["child"] => string(3) "RTY" 
    } 
    [5] => array(2) { 
    ["parent"] => string(5) "SK996" 
    ["child"] => string(3) "HGR" 
    } 
    [6] => array(2) { 
    ["parent"] => string(5) "SK547" 
    ["child"] => string(3) "GPK" 
    } 
    [7] => array(2) { 
    ["parent"] => string(5) "SK478" 
    ["child"] => string(3) "JUP" 
    } 
    [8] => array(2) { 
    ["parent"] => string(5) "SK336" 
    ["child"] => string(3) "BGH" 
    } 
} 
+0

你可能會需要這個自己構建。我在採埃孚沒有見過類似的東西。 – RockyFord 2012-02-02 07:38:09

回答

1

現在我可以理解你的問題。我認爲從子形式來思考是難以處理的。嘗試按照以下方式使用zend視圖腳本。

你form.php的

public function init() 
{ 
    foreach ($parents as $parent) { 

     $parent = new Zend_Form_Element_Hidden($parent); 
     $parent->setDecorators(array(
       array(
         'ViewScript', 
         array(
         'viewScript' => 'customviewscripts/parent.phtml', 
         'parent' => $parent   
        ) 
       ) 
      ); 
     $this->addElement($parent);  
    } 

} 

文件的意見/腳本/ customviewscript/parent.phtml

<?php 

    $params = $this->element->getDecorator('ViewScript')->getOptions(); 
    $parent = $parems['parent']; 

    $string = '<label>$parent['name']</label><input type="check" name="parent[]">'; 
    foreach ($children as $child) { 
     $string .= <label>$child['name']</label> 
       . <input type="check" name=child[$parent[id]][]>' ; 

    } 

    print $string; 
?> 

這不是真正的解決方案。我只是百分比例子。我認爲你可以自定義。大多數開發人員使用視圖腳本來製作複雜的表單。

0

你看起來像提到錯誤的語法多選項約翰,你應該試試這個。

刪除$ parent的數組,請參閱下面的示例。

new Zend_Form_Element_MultiCheckbox('parent', array(
       'multiOptions' => $parent, 
       'filters'  => array('StringTrim'), 
       'validators' => array(
       array('InArray', 
         false, 
         array($parent)) 
        ) 

從數據庫的結果,你必須出示以下爲$父變量

$父變量應該喜歡這個例如複製此數組,並嘗試你的自我,而不從數據庫中獲取,你會看到類型的數組 所有選項

$parent=Array ([1] => blah1 [2] => blah2 [3] => blah3 [4] => blah4 [5] => blah5); 

檢查這一項也爲多個複選框,到位數組,你應該試着將數組變量,我沒有帶試過這只是看着互聯網,但應該能正常運行。

$category1 = new Zend_Form_Element_MultiCheckbox('categories',Array()) 
$category1->setLabel('Category 1'); 

$category2 = new Zend_Form_Element_MultiCheckbox('categories',Array()) 
$category2->setLabel('Category 2'); 

...後...

$this->addElement($category1) 
->addElement($category2);