/**
  * Class constructor.
  *
  * @param ProjectService     $projectService
  * @param WorkpackageService $workpackageService
  */
 public function __construct(ProjectService $projectService, WorkpackageService $workpackageService)
 {
     parent::__construct();
     $this->setAttribute('method', 'post');
     $this->setAttribute('class', 'form-horizontal');
     $fieldSet = new Fieldset('effortPerAffiliationAndYear');
     foreach ($workpackageService->findWorkpackageByProjectAndWhich($projectService->getProject()) as $workpackage) {
         $workpackageFieldSet = new EffortPerWorkpackageAndAffiliationFieldset($workpackage, $projectService);
         $fieldSet->add($workpackageFieldSet);
     }
     $fieldSet->setUseAsBaseFieldset(true);
     $this->add($fieldSet);
     $this->add(['type' => 'Zend\\Form\\Element\\Submit', 'name' => 'submit', 'attributes' => ['class' => "btn btn-primary", 'value' => _("txt-update-planned-versus-spent")]]);
 }
 public function testElementInAFieldsetForSomeModel()
 {
     $element = $this->getMoneyFieldset();
     $element->init();
     $fieldset = new Fieldset('hasMoneyElementFieldset');
     $fieldset->add($element, ['name' => 'price']);
     $fieldset->setHydrator(new ClassMethods());
     $fieldset->setUseAsBaseFieldset(true);
     $form = new Form();
     $form->add($fieldset);
     // todo: can't load this
     $form->bind(new HasMoneyPropertyModel());
     $data = ['hasMoneyElementFieldset' => ['price' => ['amount' => '500.25', 'currency' => 'BRL']]];
     $form->setData($data);
     $this->assertTrue($form->isValid());
     $amountValue = $form->get('hasMoneyElementFieldset')->get('price')->get('amount')->getValue();
     $currencyValue = $form->get('hasMoneyElementFieldset')->get('price')->get('currency')->getValue();
     $object = $form->getData();
     $this->assertSame('500.25', $amountValue);
     $this->assertSame('BRL', $currencyValue);
     $this->assertInstanceOf(Money::class, $object->getPrice());
     $this->assertSame(50025, $object->getPrice()->getAmount());
     $this->assertSame('BRL', $object->getPrice()->getCurrency()->getName());
 }
Esempio n. 3
0
 public function testHydratorAppliedToBaseFieldset()
 {
     $fieldset = new Fieldset('foobar');
     $fieldset->add(new Element('foo'));
     $fieldset->setUseAsBaseFieldset(true);
     $this->form->add($fieldset);
     $this->form->setHydrator(new Hydrator\ArraySerializable());
     $baseHydrator = $this->form->get('foobar')->getHydrator();
     $this->assertInstanceOf('Zend\\Stdlib\\Hydrator\\ArraySerializable', $baseHydrator);
 }
Esempio n. 4
0
 public function testApplyObjectInputFilterToBaseFieldsetAndApplyValidationGroup()
 {
     $fieldset = new Fieldset('foobar');
     $fieldset->add(new Element('foo'));
     $fieldset->setUseAsBaseFieldset(true);
     $this->form->add($fieldset);
     $this->form->setValidationGroup(array('foobar' => array('foo')));
     $inputFilterFactory = new InputFilterFactory();
     $inputFilter = $inputFilterFactory->createInputFilter(array('foo' => array('name' => 'foo', 'required' => true)));
     $model = new TestAsset\ValidatingModel();
     $model->setInputFilter($inputFilter);
     $this->form->bind($model);
     $this->form->setData(array());
     $this->assertFalse($this->form->isValid());
     $validSet = array('foobar' => array('foo' => 'abcde'));
     $this->form->setData($validSet);
     $this->assertTrue($this->form->isValid());
 }
Esempio n. 5
0
 public function testCanBindObjectMultipleNestedFieldsets()
 {
     $productFieldset = new ProductFieldset();
     $productFieldset->setHydrator(new ClassMethods());
     $productFieldset->setObject(new Product());
     $nestedFieldset = new Fieldset('nested');
     $nestedFieldset->setHydrator(new ClassMethods());
     $nestedFieldset->setObject(new stdClass());
     $nestedFieldset->add(array('name' => 'products', 'type' => 'Collection', 'options' => array('target_element' => $productFieldset, 'count' => 2)));
     $mainFieldset = new Fieldset('main');
     $mainFieldset->setUseAsBaseFieldset(true);
     $mainFieldset->setHydrator(new ClassMethods());
     $mainFieldset->setObject(new stdClass());
     $mainFieldset->add(array('name' => 'nested', 'type' => 'Collection', 'options' => array('target_element' => $nestedFieldset, 'count' => 2)));
     $form = new Form();
     $form->setHydrator(new ObjectPropertyHydrator());
     $form->add($mainFieldset);
     $market = new stdClass();
     $prices = array(100, 200);
     $products[0] = new Product();
     $products[0]->setPrice($prices[0]);
     $products[1] = new Product();
     $products[1]->setPrice($prices[1]);
     $shop[0] = new stdClass();
     $shop[0]->products = $products;
     $shop[1] = new stdClass();
     $shop[1]->products = $products;
     $market->main = $shop;
     $form->bind($market);
     //test for object binding
     foreach ($form->get('main')->getFieldsets() as $_fieldset) {
         foreach ($_fieldset->getFieldsets() as $_nestedfieldset) {
             $this->assertInstanceOf('ZendTest\\Form\\TestAsset\\Entity\\Product', $_nestedfieldset->get('products')->getObject());
         }
     }
 }