/** * Create a new form instance. * * @return Form */ public function create() { $class = $this->getClass(); $form = new $class(); $template = $this->templateManager->create(); $template->setObjectClass($this->postManager->getClass()); $form->setTemplate($template); return $form; }
/** * Build rules * * @return array */ public function buildRules() { $rules = array(); $rules[] = new RuleSet(); $condition = new TemplateCondition(); $condition->setGroup('Content')->setName('Template')->setEntity($this->contentClass)->setAttribute('id'); $templateRepository = $this->templateManager->getRepository(); $templates = $templateRepository->findBy(['objectClass' => $this->contentClass]); $options = array(); foreach ($templates as $template) { $options[$template->getId()] = $template->getDisplayName(); } $condition->setOptions($options); $rules[] = $condition; $condition = new ContentCondition(); $condition->setGroup('Content')->setName('Content')->setOperatorOpts(array('in', 'notin'))->setEntity($this->contentClass)->setAttribute('id'); $rules[] = $condition; $condition = new AttributeCondition(); $condition->setGroup('Content')->setName('Title')->setOperatorOpts(array('equals', 'notequals', 'contains'))->setEntity($this->contentClass)->setAttribute('title'); $rules[] = $condition; $condition = new AttributeCondition(); $condition->setGroup('Content')->setName('Description')->setOperatorOpts(array('equals', 'notequals', 'contains'))->setEntity($this->contentClass)->setAttribute('title'); $rules[] = $condition; $condition = new AttributeCondition(); $condition->setGroup('Content')->setName('Slug')->setOperatorOpts(array('equals', 'notequals', 'contains'))->setEntity($this->contentClass)->setAttribute('title'); $rules[] = $condition; // $condition = new AttributeCondition(); // $condition->setGroup('Content')->setName('Directory')->setOperatorOpts(array('equals', 'notequals'))->setOperator('equals')->setEntity($this->contentClass)->setAttribute('title'); // $rules[] = $condition; $templates = $templateRepository->findBy(['objectClass' => $this->contentClass]); foreach ($templates as $template) { foreach ($template->getAttributes() as $attribute) { $condition = false; switch ($attribute->getValueType()) { case 'Opifer\\EavBundle\\Entity\\TextValue': case 'Opifer\\CmsBundle\\Entity\\HtmlValue': case 'Opifer\\EavBundle\\Entity\\StringValue': $condition = new StringValueCondition(); $condition->setOperatorOpts(array('equals', 'notequals', 'contains')); break; case 'Opifer\\EavBundle\\Entity\\CheckListValue': $condition = new CheckListValueCondition(); $options = array(); foreach ($attribute->getOptions() as $option) { $options[$option->getId()] = $option->getDisplayName(); } $condition->setOptions($options); break; } if ($condition) { $condition->setGroup($template->getDisplayName())->setName($attribute->getDisplayName())->setEntity($this->contentClass)->setAttribute($attribute->getName()); $rules[] = $condition; } switch ($attribute->getValueType()) { case 'Opifer\\EavBundle\\Entity\\AddressValue': $condition = new AddressValueCityCondition(); $condition->setGroup($template->getDisplayName())->setName($attribute->getDisplayName() . ' – City')->setEntity($this->contentClass)->setAttribute($attribute->getName()); $rules[] = $condition; break; } } } return $rules; }