Hello
i have the following setup similar to the Doctrine hydrate example
LabelController:
public function addAction()
{
// Get your ObjectManager from the ServiceManager
$objectManager =
$this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
// Create the form and inject the ObjectManager
$form = new CreateLabelForm($objectManager);
// Create a new, empty entity and bind it to the form
$label = new Label();
$form->bind($label);
if ($this->request->isPost())
{
$form->setData($this->request->getPost());
if ($form->isValid())
{
$objectManager->persist($label);
$objectManager->flush();
}
}
return array('form' => $form);
}
Form:
class CreateLabelForm extends Form
{
protected $objectManager;
public function __construct(ObjectManager $objectManager)
{
parent::__construct('create-label-form');
$this->setObjectManager($objectManager);
$this->setHydrator(new DoctrineHydrator($this->getObjectManager()));
$this->addElements();
}
public function addElements()
{
// Add the product fieldset, and set it as the base fieldset
$labelFieldset = new LabelFieldSet($this->getObjectManager());
$labelFieldset->setUseAsBaseFieldset(true);
$this->add($labelFieldset);
$this->add(array(
'name' => 'submit',
'type' => 'Submit',
'attributes' => array(
'value' => 'Go',
'id' => 'submitbutton',
'class' => 'btn btn-primary'
),
));
}
/**
* Get objectManager
*
* @return type
*/
public function getObjectManager()
{
return $this->objectManager;
}
/**
* Set objectManager
*
* @param ObjectManager $objectManager
* @return \Cms\Form\ProductForm
*/
public function setObjectManager(ObjectManager $objectManager)
{
$this->objectManager = $objectManager;
return $this;
}
}
Fieldset:
class LabelFieldSet extends Fieldset implements InputFilterAwareInterface
{
/**
* @var ObjectManager
*
*/
protected $objectManager;
/**
* @var LabelRepository
*
*/
protected $labelRepository;
public function __construct(ObjectManager $objectManager)
{
parent::__construct('label');
$this->setObjectManager($objectManager);
$this->setHydrator(new
DoctrineEntity($this->getObjectManager()))->setObject(new Label());
$this->addElements();
}
public function addElements()
{
$this->add(array(
'type' => 'Zend\Form\Element\Text',
'name' => 'name',
'attributes' => array(
'type' => 'text',
'id' => 'searchLabels',
'placeholder' => 'Enter label name'
),
'options' => array(
'label' => 'Label'
)
));
}
/**
* Get labelRepository
*
* @return type
*/
public function getLabelRepository()
{
return $this->labelRepository;
}
/**
* Set labelRepository
*
* @param LabelRepository $labelRepository
* @return \Cms\Form\LabelSearchFieldSet
*/
public function setLabelRepository(LabelRepository $labelRepository)
{
$this->labelRepository = $labelRepository;
return $this;
}
/**
* Get objectManager
*
* @return type
*/
public function getObjectManager()
{
return $this->objectManager;
}
/**
* Set objectManager
*
* @param ObjectManager $objectManager
* @return \Cms\Form\LabelSearchFieldSet
*/
public function setObjectManager(ObjectManager $objectManager)
{
$this->objectManager = $objectManager;
return $this;
}
/**
* Method builds up a \Zend\InputFilter\InputFilter for validating
Genre related input.
*
* @return type \Zend\InputFilter\InputFilter
*/
public function getInputFilter()
{
if (!$this->inputFilter)
{
$inputFilter = new InputFilter();
$factory = new Factory();
$inputFilter->add($factory->createInput(array(
'name' => 'name',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 255,
),
),
),
)));
$this->inputFilter = $inputFilter;
}
return $this->inputFilter;
}
/**
* Method is not used. The inputfilter is setup in @see
LabelFieldSet::getInputFilter()
*
* @param \Entities\InputFilterInterface $inputFilter
* @throws Exception
*/
public function setInputFilter(InputFilterInterface $inputFilter)
{
throw new Exception("Not used");
}
}
View add.phtml
<?php
// module/cms/view/label/add.phtml:
$title = 'Add Label';
$this->headTitle($title);
?>
<h1><?php echo $this->escapeHtml($title); ?></h1>
<?php
$form->setAttribute('action', $this->url('label', array('action' =>
'add')));
$form->setAttribute('class', 'form-horizontal');
echo $this->form()->openTag($form);
$label = $form->get('label');
?>
<div class="form-group">
<?php echo $this->formCollection($form->get('label')); ?>
</div>
<div class="form-group">
<?php echo $this->formElement($form->get('submit')); ?>
</div>
<?php
echo $this->form()->closeTag();
?>
I keep getting the following error messages:
Notice: Undefined index: label in
/home/ubuntu/NetBeansProjects/antenne-tilburg/vendor/zendframework/zendframework/library/Zend/Form/Form.php
on line
*363*
Catchable fatal error: Argument 1 passed to
Zend\Form\Fieldset::bindValues() must be of the type array, null given,
called in /zendframework/zendframework/library/Zend/Form/Fieldset.php on
line
*571*I see all the data is getting passed normally however it looks for a
label, but it should look for a name value.
Could anyone please help me out?
Thanks a lot
--
You received this message because you are subscribed to the Google Groups
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.