示例#1
0
 public function testBase()
 {
     $field = Builder::group(['name' => Builder::text()->label('Name'), 'email' => Builder::email()->label('email'), 'age' => Builder::number()->label('Age'), 'image' => Builder::file()->label('Image')]);
     $this->assertInstanceOf('FormManager\\Containers\\Group', $field);
     $this->assertInstanceOf('FormManager\\Fields\\Text', $field['name']);
     return $field;
 }
示例#2
0
 /**
  * @depends testBase
  */
 public function testFields(Form $form)
 {
     $form->add(['name' => Builder::text()->maxlength(50)->required()->label('Your name'), 'email' => Builder::email()->required()->label('Your email'), 'telephone' => Builder::tel()->required()->label('Telephone number'), 'avatar' => Builder::file()->required()->label('Avatar'), 'gender' => Builder::choose(['m' => Builder::radio()->label('Male'), 'f' => Builder::radio()->required()->label('Female')]), 'born' => Builder::group(['day' => Builder::number()->required()->min(1)->max(31)->label('Day'), 'month' => Builder::number()->required()->min(1)->max(12)->label('Month'), 'year' => Builder::number()->required()->min(1900)->max(2013)->label('Year')]), 'language' => Builder::select()->required()->options(array('gl' => 'Galician', 'es' => 'Spanish', 'en' => 'English'))->label('Language'), 'friends' => Builder::collection(['name' => Builder::text()->required()->label('Name'), 'email' => Builder::email()->required()->label('email'), 'age' => Builder::number()->required()->label('Age')]), 'action' => Builder::choose(['save' => Builder::submit()->html('Save changes'), 'duplicate' => Builder::submit()->html('Save as new value')])]);
     $this->assertCount(9, $form);
     $this->assertInstanceOf('FormManager\\Fields\\Text', $form['name']);
     $this->assertInstanceOf('FormManager\\Fields\\Submit', $form['action']['save']);
     $this->assertSame($form, $form['action']['save']->getForm());
     return $form;
 }
示例#3
0
 /**
  * Returns the template used to create all values.
  *
  * @param mixed $template The new template
  *
  * @return self
  */
 public function setTemplate($template)
 {
     if (is_array($template)) {
         $template = F::group($template);
     } elseif (!$template instanceof Group) {
         throw new \InvalidArgumentException('Invalid type of the template. Only arrays and FormManager\\Containers\\Group are allowed');
     }
     $this->template = $template;
     return $this;
 }
 /**
  * {@inheritdoc}
  */
 public function add(array $children)
 {
     foreach ($children as $type => $child) {
         $child = F::group($child);
         if (!isset($child[$this->keyField])) {
             $child[$this->keyField] = F::hidden()->val($type);
         }
         $this->template[$type] = $child;
     }
     return $this;
 }
示例#5
0
 protected function _testElement($element)
 {
     //Id attribute
     $this->assertSame($element->id('input-id'), $element);
     $this->assertEquals('input-id', $element->attr('id'));
     $this->assertNull($element->val());
     //Name
     $this->assertNull($element->data('name'));
     $element->attr('name', 'new-name');
     $this->assertEquals('new-name', $element->attr('name'));
     $group = Builder::group();
     $group['my-name'] = $element;
     $this->assertEquals('my-name', $element->attr('name'));
     $this->_testNameAttributeException($element);
     //Data
     $element->data('boolean-value', true);
     $this->assertTrue($element->data('boolean-value'));
     $this->assertSame($element->data('name', 'value'), $element);
     $this->assertEquals('value', $element->data('name'));
     $this->assertEquals(['name' => 'value', 'boolean-value' => true], $element->data());
     //Add, remove classes
     $this->assertNull($element->attr('class'));
     $this->assertSame($element->addClass('first'), $element);
     $element->addClass('second');
     $this->assertEquals('first second', $element->attr('class'));
     $this->assertSame($element->removeClass('second'), $element);
     $this->assertEquals('first', $element->attr('class'));
     //Arbitrary values
     $this->assertSame($element->set('myVar', ['one', 'two']), $element);
     $this->assertEquals(['one', 'two'], $element->get('myVar'));
     $element->set('var1', true);
     $this->assertTrue($element->get('var1'));
     $element->set(['var1' => false, 'var2' => true]);
     $this->assertFalse($element->get('var1'));
     $this->assertTrue($element->get('var2'));
 }
示例#6
0
<?php

require __DIR__ . '/src/autoloader.php';
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/php.log');
use FormManager\Builder as F;
use FormManager\InvalidValueException;
$form = F::Form(['data' => F::group(['dia' => F::number()->label('Dia'), 'mes' => F::number()->label('Mes')]), 'colores' => F::choose(['red' => F::radio()->label('Red'), 'blue' => F::radio()->label('Blue'), 'green' => F::radio()->label('Green')]), 'personas' => F::collection(['nome' => F::text()->label('Nome'), 'apelido' => F::text()->label('Apelidos')]), 'bloques' => F::collectionMultiple(['texto' => ['titulo' => F::text()->label('Titulo'), 'texto' => F::textarea()->label('Texto')], 'cita' => ['texto' => F::textarea()->label('Texto'), 'autor' => F::text()->label('Autor')]]), 'enviar' => F::submit()->html('Enviar')]);
$form->fieldsets(['personal' => ['nome' => F::text()->label('O teu nome')->addValidator(function ($input) {
    if ($input->val() !== 'Lolo') {
        throw new InvalidValueException('Nome non valido, debe ser Lolo');
    }
})->datalist(['Lolo' => 'Lolo', 'Manolo' => 'Manolo']), 'apelido' => F::text()->label('O teu apelido'), 'idade' => F::select()->options([1 => 'Menor de idade', 2 => 'Maiore de idade'])->label('Idade')->render(function ($input) {
    return '<p>' . $input . '</p>';
})]]);
$form['nome']->errorLabel->class('my-error');
$form->loadFromGlobals();
if (!$form->isValid()) {
    echo 'Invalid values';
}
echo $form;