2014-11-20 3 views
1

Я хочу создать классификацию multi checkbox в zend framework 2 form. Ниже приведена картина, которую я хочу достичь.Doctrine Multi checkbox в zend framework 2

enter image description here

Я уже отображаются все флажки с помощью DoctrineModule \ Form \ Элемент \ ObjectMultiCheckbox. Как я могу классифицировать их в соответствующую часть.

Ниже представлены мои сущности.

/** 
* @ORM\Entity 
* @ORM\Table(name="permissions") 
*/ 
class Permission implements PermissionInterface 
{ 

/** 
* @var int|null 
* 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var string|null 
* 
* @ORM\Column(type="string", length=128, unique=true) 
*/ 
protected $name; 

/** 
* @var string|null 
* 
* @ORM\Column(type="string", length=128, unique=false) 
*/ 
protected $label; 

/** 
* @ORM\ManyToOne(targetEntity="ApplicationFeatures", inversedBy="permissions") 
*/ 
protected $applicationFeature; 
} 

Указанный объект присутствует. Для категории i создайте другой объект и добавьте внешний ключ к указанному выше объекту, чтобы проверить, какое разрешение принадлежит категории. моя другая сущность является

/** 
* @ORM\Entity 
* @ORM\Table(name="application_features") 
*/ 
class ApplicationFeatures 
{ 
/** 
* @var int|null 
* 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var string|null 
* 
* @ORM\Column(type="string", length=30, unique=true) 
*/ 
protected $name; 

/** 
* @var Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Permission", mappedBy="applicationFeature") 
*/ 
protected $permissions; 
} 
+0

и с чем именно у вас возникли проблемы? получение флагов/подтверждение или гидратацию? – cptnk

+0

Моя проблема в дизайне. Я отобразил все флажки, но не знаю, как отображать с категориями, которые находятся в другой таблице (сущности) –

ответ

0

У меня была такая же проблема и решена так: У вас есть класс прав и класса ApplicationFeatures. Использовать только 1 класс Разрешение с дополнительной колонкой - Родитель. Когда вы печатаете MultiCheckBox, управление метками, управление страницами, управление меню становятся флажками.

В вашей форме редактирования контроллера таким образом:

{ 
    $form->bind($Permission); 
    $list = SELECT ARRAY FROM DATABASE IN A FORM $result['id'] = $result; 
    $element = $form->get('Permission'); 
    $myValueOptions = $element->getValueOptions(); 

    $newValueOptions = array(); 
    foreach($myValueOptions AS $key=>$myValueOption){ 
     $newValueOptions[$key] = $myValueOption; 
     $newValueOptions[$key]['label_attributes'] = 
      array('style' => 'display:block; '); 
     if($list[$myValueOption['value']]['isParent']==1){ 
      $newValueOptions[$key]['label_attributes']['style'] .= 
        'font-weight: bold;'; 
      $newValueOptions[$key]['attributes'] = array('class'=>'isParent'); 
     } 
    } 
    $element->setValueOptions(newValueOptions); 
} 

Теперь удалите флажки на родительских этикетках. В конце вашего .phtml добавить скрипт:

{ 

<script> 
    $(function() { 
     $(".isParent").remove(); 
    }); 
</script> 
} 
Смежные вопросы