Ejemplo n.º 1
0
 /**
  * Registers a new form element.
  *
  * @param \DeForm\Element\ElementInterface $element
  * @return self
  */
 public function addElement(ElementInterface $element)
 {
     $name = $element->getName();
     if (true === array_key_exists($name, $this->elements)) {
         throw new \LogicException(sprintf('Cannot set the element "%s" more than once (same name)', $name));
     }
     $request_value = $this->request->get($name);
     $this->elements[$name] = $element;
     if (true === $this->canSetElementValue($element, $request_value)) {
         $element->setValue($request_value);
     }
     return $this;
 }
Ejemplo n.º 2
0
 function it_should_validate_data_and_return_fail(ValidatorFactoryInterface $factory, ValidatorInterface $validator, ElementInterface $el)
 {
     $rules = ['foo' => 'required'];
     $values = ['foo' => ''];
     $errors = ['foo' => ['Foo element is required.']];
     $elements = ['foo' => $el];
     $factory->make($rules)->willReturn($validator);
     $validator->validate($values)->willReturn(false);
     $validator->getMessages()->willReturn($errors);
     $el->getName()->willReturn('foo');
     $el->setInvalid(json_encode($errors['foo']))->shouldBeCalled();
     $this->validate($rules, $values)->shouldReturn(false);
     $this->updateValidationStatus($elements);
 }
Ejemplo n.º 3
0
 function let(Request $request, Validator $validator, ElementFactory $elementFactory, ParserFactoryInterface $parserFactory, NodeInterface $formNode, NodeInterface $textInput, NodeInterface $hiddenInput, ElementInterface $textElement, DocumentInterface $document, ParserInterface $parser)
 {
     $this->beConstructedWith($request, $validator, $elementFactory, $parserFactory);
     $parserFactory->createDocument($this->html)->willReturn($document);
     $parserFactory->createParser($document)->willReturn($parser);
     $parser->getFormNode()->willReturn($formNode);
     $parser->getElementsNodes()->willReturn($nodes = [$textInput]);
     $formNode->getAttribute('name')->willReturn($form_name = 'testform');
     $formNode->createElement('input')->shouldBeCalled()->willReturn($hiddenInput);
     $hiddenInput->setAttribute('type', 'hidden')->shouldBeCalled();
     $hiddenInput->setAttribute('value', $form_name)->shouldBeCalled();
     $hiddenInput->setAttribute('name', DeForm::DEFORM_ID)->shouldBeCalled();
     $formNode->appendChild($hiddenInput)->shouldBeCalled();
     $textInput->getElementType()->willReturn('input_text');
     $textElement->getName()->willReturn('foo');
     $elementFactory->createFromNodes($nodes)->willReturn([$textElement]);
 }
Ejemplo n.º 4
0
 function it_should_fill_the_form(Request $request, Element $el1, Element $el2)
 {
     $request->get(DeForm::DEFORM_ID)->willReturn('foo');
     $request->get('field_1')->willReturn('bar');
     $request->get('field_2')->willReturn(42);
     $el1->getName()->willReturn($field_1 = 'field_1');
     $el1->isReadonly()->willReturn(false);
     $el1->setValue('bar')->shouldBeCalled();
     $el2->getName()->willReturn($field_2 = 'field_2');
     $el2->isReadonly()->willReturn(false);
     $el2->setValue(42)->shouldBeCalled();
     $this->addElement($el1);
     $this->addElement($el2);
     $el1->setValue($new_value_field_1 = 'first')->shouldBeCalled();
     $el2->setValue($new_value_field_2 = 'second')->shouldBeCalled();
     $this->fill([$field_1 => $new_value_field_1, $field_2 => $new_value_field_2]);
 }