예제 #1
0
 public function testShouldReturnOldContext()
 {
     $mock = new MockLayout();
     $resource = $this->getMockBuilder(MyResource::class)->enableProxyingToOriginalMethods()->setConstructorArgs([null])->getMock();
     $resource->expects($this->once())->method('getErrorFor');
     $form = Form::create('id', function ($f) {
         $f->textfield('foo');
     }, ['layout' => $mock]);
     $this->assertCount(1, $mock->field);
     $this->assertInstanceOf('NitroXy\\PHPForms\\FormInput', $mock->field['foo']);
     $this->assertEquals('field error', $mock->field['foo']->getError($resource));
 }
예제 #2
0
 public function testGroup()
 {
     $mock = new MockLayout();
     $form = Form::create('id', function ($f) {
         $f->textField('c', null);
         $f->group("group1", function ($f) {
             $f->textField('a', null);
         });
         $f->group("group2", function ($f) {
             $f->textField('b', null);
         });
     }, ['layout' => $mock]);
     $this->assertEquals(1, $mock->opened, "Layout preamble must be opened exactly once");
     $this->assertEquals(1, $mock->closed, "Layout postamble must be closed exactly once");
     $this->assertArrayHasKey('group1', $mock->group);
     $this->assertArrayHasKey('group2', $mock->group);
     $this->assertArrayHasKey('a', $mock->group['group1']);
     $this->assertArrayHasKey('b', $mock->group['group2']);
 }
예제 #3
0
 public function testUploadField()
 {
     $mock = new MockLayout();
     $form = Form::create('id', function ($f) {
         $f->uploadField('foo', 'Label');
         $f->uploadField('bar', 'Label', ['remove' => true]);
         $f->uploadField('baz', 'Label', ['current' => 'Preview']);
     }, ['layout' => $mock]);
     $this->assertArrayHasKey('foo', $mock->field);
     $this->assertArrayNotHasKey('foo_remove', $mock->field);
     $this->assertArrayNotHasKey('foo_current', $mock->field);
     $this->assertArrayHasKey('bar', $mock->field);
     $this->assertArrayHasKey('bar_remove', $mock->field);
     $this->assertArrayNotHasKey('bar_current', $mock->field);
     $this->assertArrayHasKey('baz', $mock->field);
     $this->assertArrayNotHasKey('baz_remove', $mock->field);
     $this->assertArrayHasKey('baz_current', $mock->field);
     $this->assertEquals('file', $mock->field['foo']->attribute('type'));
 }
예제 #4
0
<?php

/*~*/
use NitroXy\PHPForms\Form;
Form::create("example_method", function ($f) {
    /* ... */
}, ['method' => 'patch']);
예제 #5
0
 public function testSubmitName()
 {
     $mock = new MockLayout();
     $form = Form::create('id', function ($f) {
         $f->submit('label', 'foo');
     }, ['layout' => $mock]);
     $this->assertCount(1, $mock->field);
     $this->assertInstanceOf('NitroXy\\PHPForms\\FormButton', $mock->field['foo']);
     $this->assertEquals('<button type="submit" name="foo" id="id_foo">label</button>', $mock->field['foo']->getContent());
 }
예제 #6
0
<?php

/*~*/
use NitroXy\PHPForms\Form;
use NitroXy\PHPForms\FormSelect;
class MyClassA
{
}
class MyClassB
{
}
$a = new MyClassA();
$a->name = 'Name A';
$b = new MyClassB();
$b->name = 'Name B';
Form::create('example6', function ($f) use($a, $b) {
    $f->fieldsFor('A', $a, function ($f) {
        $f->textField('name', 'Name');
    });
    $f->fieldsFor('B', $b, function ($f) {
        $f->textField('name', 'Name');
    });
}, ['layout' => 'bootstrap']);
예제 #7
0
<?php

/*~*/
use NitroXy\PHPForms\Form;
Form::create("example2-{$layout}", function ($f) {
    $f->textField('name', 'My field name');
}, ['layout' => $layout]);
예제 #8
0
파일: smoke.php 프로젝트: nitroxy/php-forms
use NitroXy\PHPForms\Form;
use NitroXy\PHPForms\FormOptions;
global $layout;
Form::create('smoketest', function ($f) {
    $f->hiddenField('name', 'Hidden (this wont show at all)', ['value' => '8']);
    $f->textField('text_field', 'Text', ['hint' => 'Use the "type" option to use custom type such as number.']);
    $f->passwordField('password_field', 'Password', ['hint' => 'Passwords are not persistent if autocomplete is off', 'autocomplete' => 'off']);
    $f->customField('custom_field', 'email', 'Email', ['hint' => 'Another way to add custom input fields (same as using textField with type).', 'placeholder' => '*****@*****.**']);
    $f->textarea('textarea', 'Textarea');
    $f->select('select', 'Select', FormOptions::fromArray(['A', 'B', 'C']));
    $f->staticValue('static', 'Static text');
    $f->link('link', 'https://example.net', 'Static link');
    $f->hint('static', 'Lorem ipsum dot sit amet.');
    $f->uploadField('upload', 'File upload', ['remove' => true]);
    $f->checkbox('checkbox', 'Checkbox');
    $f->manual('manual', 'Manual', '<em>Custom html</em>', false);
    $f->submit('Submit button');
    $f->button('Generic button', false, ['class' => 'btn-success']);
    /* groups allows you to put multiple fields inline (label is optional) */
    $f->group('Inline group', function ($f) {
        $f->button('Button 1', false, ['class' => 'btn-default']);
        $f->button('Button 2', false, ['class' => 'btn-danger']);
        $f->button('Button 3');
    });
    /* fieldsets */
    $f->fieldset('Fieldset', function ($f) {
        $f->textField('text1', 'Input 1');
        $f->textField('text2', 'Input 2');
        $f->textField('text3', 'Input 3');
    });
}, ['layout' => $layout]);
예제 #9
0
<?php

/*~*/
use NitroXy\PHPForms\Form;
Form::create('example1', function ($f) {
    $f->textField('name', 'My field name');
});
예제 #10
0
 public function testNoExtraAttr()
 {
     $mock = new MockLayout();
     $form = Form::create('id', function ($f) {
     }, ['layout' => $mock]);
     $expected = ['id', 'class', 'method', 'action'];
     $this->assertEquals($expected, array_keys($mock->form_attr));
     /* id is not passed via attribute but should also be present */
     $this->assertEquals('id', $mock->form_id);
 }
예제 #11
0
 /**
  * @expectedException PHPUnit_Framework_Error
  */
 public function testInvalidLabel()
 {
     $mock = new MockLayout();
     $form = Form::create('id', function ($f) {
         $f->select('foo', 5, FormOptions::fromArray([]));
     }, ['layout' => $mock]);
 }