Zend Form Проблема в Zend Framework - PullRequest
       0

Zend Form Проблема в Zend Framework

0 голосов
/ 02 февраля 2012

Я использую Zend Framework Form, я новичок в Zend Framework, и я хочу отобразить свою форму флажка следующим образом: -

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

Обратите внимание, где: - * здесь установлен флажок

Я пытаюсь найти здесь: -

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 Framework, яя использую суб-форму Zend здесь.

Также я получил ошибку прямо сейчас, когда я использую этот запрос

Предупреждение: htmlspecialchars () ожидает, что параметр 1 будет строкой, массив задан в / var/www/dashboard_campaign/library/Zend/View/Abstract.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 :: dump ($ this-> 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"
  }
}

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Теперь я могу понять вашу проблему. Я думаю, что это трудно для обработки, которые думают из суб формы. Попробуйте использовать скрипты Zend View следующим образом.

Ваш 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);     
    }

}

файл в views / script / 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 голосов
/ 02 февраля 2012

Вы выглядите как упомянутый неправильный синтаксис для нескольких опций Джон, вы должны попробовать это.

Удалить массив для $ parent, см. Пример ниже.

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

Из результатов db, которые вы должны получитьследующий тип массива для переменной $ 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...