array('for' => 'contact-email'),
'Email',
'/label',
array('input' => array(
'type' => 'email', 'name' => 'Contact[email]',
'id' => 'contact-email', 'maxlength' => 255
)),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('Contact.email', array('type' => 'text'));
$expected = array(
'div' => array('class' => 'input text'),
'label' => array('for' => 'contact-email'),
'Email',
'/label',
array('input' => array(
'type' => 'text', 'name' => 'Contact[email]',
'id' => 'contact-email', 'maxlength' => '255'
)),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('Contact.5.email', array('type' => 'text'));
$expected = array(
'div' => array('class' => 'input text'),
'label' => array('for' => 'contact-5-email'),
'Email',
'/label',
array('input' => array(
'type' => 'text', 'name' => 'Contact[5][email]',
'id' => 'contact-5-email', 'maxlength' => '255'
)),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('Contact.password');
$expected = array(
'div' => array('class' => 'input password'),
'label' => array('for' => 'contact-password'),
'Password',
'/label',
array('input' => array(
'type' => 'password', 'name' => 'Contact[password]',
'id' => 'contact-password'
)),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('Contact.email', array(
'type' => 'file', 'class' => 'textbox'
));
$expected = array(
'div' => array('class' => 'input file'),
'label' => array('for' => 'contact-email'),
'Email',
'/label',
array('input' => array(
'type' => 'file', 'name' => 'Contact[email]', 'class' => 'textbox',
'id' => 'contact-email'
)),
'/div'
);
$this->assertTags($result, $expected);
$entity = new Entity(['phone' => 'Hello & World > weird chars']);
$this->Form->create($entity, ['context' => ['table' => 'Contacts']]);
$result = $this->Form->input('Contact.phone');
$expected = array(
'div' => array('class' => 'input tel'),
'label' => array('for' => 'contact-phone'),
'Phone',
'/label',
array('input' => array(
'type' => 'tel', 'name' => 'Contact[phone]',
'value' => 'Hello & World > weird chars',
'id' => 'contact-phone', 'maxlength' => 255
)),
'/div'
);
$this->assertTags($result, $expected);
$this->Form->request->data['Model']['0']['OtherModel']['field'] = 'My value';
$this->Form->create();
$result = $this->Form->input('Model.0.OtherModel.field', array('id' => 'myId'));
$expected = array(
'div' => array('class' => 'input text'),
'label' => array('for' => 'myId'),
'Field',
'/label',
'input' => array(
'type' => 'text', 'name' => 'Model[0][OtherModel][field]',
'value' => 'My value', 'id' => 'myId'
),
'/div'
);
$this->assertTags($result, $expected);
unset($this->Form->request->data);
$entity->errors('field', 'Badness!');
$this->Form->create($entity, ['context' => ['table' => 'Contacts']]);
$result = $this->Form->input('Contact.field');
$expected = array(
'div' => array('class' => 'input text error'),
'label' => array('for' => 'contact-field'),
'Field',
'/label',
'input' => array(
'type' => 'text', 'name' => 'Contact[field]',
'id' => 'contact-field', 'class' => 'form-error'
),
array('div' => array('class' => 'error-message')),
'Badness!',
'/div',
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('Contact.field', array(
'templates' => [
'groupContainerError' => '{{content}}{{error}}',
'error' => '
{{content}}'
]
));
$expected = array(
'label' => array('for' => 'contact-field'),
'Field',
'/label',
'input' => array(
'type' => 'text', 'name' => 'Contact[field]',
'id' => 'contact-field', 'class' => 'form-error'
),
array('span' => array('class' => 'error-message')),
'Badness!',
'/span'
);
$this->assertTags($result, $expected);
$entity->errors('field', ['minLength']);
$result = $this->Form->input('Contact.field', array(
'error' => array(
'minLength' => 'Le login doit contenir au moins 2 caractères',
'maxLength' => 'login too large'
)
));
$expected = array(
'div' => array('class' => 'input text error'),
'label' => array('for' => 'contact-field'),
'Field',
'/label',
'input' => array('type' => 'text', 'name' => 'Contact[field]', 'id' => 'contact-field', 'class' => 'form-error'),
array('div' => array('class' => 'error-message')),
'Le login doit contenir au moins 2 caractères',
'/div',
'/div'
);
$this->assertTags($result, $expected);
$entity->errors('field', ['maxLength']);
$result = $this->Form->input('Contact.field', array(
'error' => array(
'minLength' => 'Le login doit contenir au moins 2 caractères',
'maxLength' => 'login too large',
)
));
$expected = array(
'div' => array('class' => 'input text error'),
'label' => array('for' => 'contact-field'),
'Field',
'/label',
'input' => array('type' => 'text', 'name' => 'Contact[field]', 'id' => 'contact-field', 'class' => 'form-error'),
array('div' => array('class' => 'error-message')),
'login too large',
'/div',
'/div'
);
$this->assertTags($result, $expected);
}
/**
* Test that inputs with 0 can be created.
*
* @return void
*/
public function testInputZero() {
TableRegistry::get('Contacts', [
'className' => __NAMESPACE__ . '\ContactsTable'
]);
$this->Form->create([], ['context' => ['table' => 'Contacts']]);
$result = $this->Form->input('0');
$expected = array(
'div' => array('class' => 'input text'),
'label' => array('for' => '0'), '/label',
'input' => array('type' => 'text', 'name' => '0', 'id' => '0'),
'/div'
);
$this->assertTags($result, $expected);
}
/**
* test input() with checkbox creation
*
* @return void
*/
public function testInputCheckbox() {
$result = $this->Form->input('User.active', array('label' => false, 'checked' => true));
$expected = array(
'div' => array('class' => 'input checkbox'),
'input' => array('type' => 'hidden', 'name' => 'User[active]', 'value' => '0'),
array('input' => array('type' => 'checkbox', 'name' => 'User[active]', 'value' => '1', 'id' => 'user-active', 'checked' => 'checked')),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('User.active', array('label' => false, 'checked' => 1));
$expected = array(
'div' => array('class' => 'input checkbox'),
'input' => array('type' => 'hidden', 'name' => 'User[active]', 'value' => '0'),
array('input' => array('type' => 'checkbox', 'name' => 'User[active]', 'value' => '1', 'id' => 'user-active', 'checked' => 'checked')),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('User.active', array('label' => false, 'checked' => '1'));
$expected = array(
'div' => array('class' => 'input checkbox'),
'input' => array('type' => 'hidden', 'name' => 'User[active]', 'value' => '0'),
array('input' => array('type' => 'checkbox', 'name' => 'User[active]', 'value' => '1', 'id' => 'user-active', 'checked' => 'checked')),
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('User.disabled', array(
'label' => 'Disabled',
'type' => 'checkbox',
'data-foo' => 'disabled'
));
$expected = array(
'div' => array('class' => 'input checkbox'),
'input' => array('type' => 'hidden', 'name' => 'User[disabled]', 'value' => '0'),
array('input' => array(
'type' => 'checkbox',
'name' => 'User[disabled]',
'value' => '1',
'id' => 'user-disabled',
'data-foo' => 'disabled'
)),
'label' => array('for' => 'user-disabled'),
'Disabled',
'/label',
'/div'
);
$this->assertTags($result, $expected);
}
/**
* test form->input() with time types.
*
*/
public function testInputTime() {
$this->markTestIncomplete('Need to revisit once models work again.');
extract($this->dateRegex);
$result = $this->Form->input('Contact.created', array('type' => 'time', 'timeFormat' => 24));
$result = explode(':', $result);
$this->assertRegExp('/option value="23"/', $result[0]);
$this->assertNotRegExp('/option value="24"/', $result[0]);
$result = $this->Form->input('Contact.created', array('type' => 'time', 'timeFormat' => 24));
$result = explode(':', $result);
$this->assertRegExp('/option value="23"/', $result[0]);
$this->assertNotRegExp('/option value="24"/', $result[0]);
$result = $this->Form->input('Model.field', array(
'type' => 'time', 'timeFormat' => 24, 'interval' => 15
));
$result = explode(':', $result);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertRegExp('#
#', $result[1]);
$result = $this->Form->input('Model.field', array(
'type' => 'time', 'timeFormat' => 12, 'interval' => 15
));
$result = explode(':', $result);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertRegExp('#
#', $result[1]);
$result = $this->Form->input('prueba', array(
'type' => 'time', 'timeFormat' => 24, 'dateFormat' => 'DMY', 'minYear' => 2008,
'maxYear' => date('Y') + 1, 'interval' => 15
));
$result = explode(':', $result);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertRegExp('#
#', $result[1]);
$this->assertRegExp('#
#', $result[1]);
$result = $this->Form->input('Random.start_time', array(
'type' => 'time',
'selected' => '18:15'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('published', array('type' => 'time'));
$now = strtotime('now');
$this->assertContains('
', $result);
$now = strtotime('2013-03-09 00:42:21');
$result = $this->Form->input('published', array('type' => 'time', 'selected' => $now));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
}
/**
* Test interval + selected near the hour roll over.
*
* @return void
*/
public function testTimeSelectedWithInterval() {
$this->markTestIncomplete('Need to revisit once models work again.');
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'interval' => 15,
'selected' => array('hour' => '3', 'min' => '57', 'meridian' => 'pm')
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'interval' => 15,
'selected' => '2012-10-23 15:57:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'timeFormat' => 24,
'type' => 'time',
'interval' => 15,
'selected' => '15:57'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'timeFormat' => 24,
'type' => 'time',
'interval' => 15,
'selected' => '23:57'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.created', array(
'timeFormat' => 24,
'type' => 'datetime',
'interval' => 15,
'selected' => '2012-09-30 23:56'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
}
/**
* Test time with selected values around 12:xx:xx
*
* @return void
*/
public function testTimeSelectedWithIntervalTwelve() {
$this->markTestIncomplete('Need to revisit once models work again.');
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => 12,
'interval' => 15,
'selected' => '00:00:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => 12,
'interval' => 15,
'selected' => '12:00:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => 12,
'interval' => 15,
'selected' => '12:15:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
}
/**
* Test interval & timeFormat = 12
*
* @return void
*/
public function testInputTimeWithIntervalAnd12HourFormat() {
$this->markTestIncomplete('Need to revisit once models work again.');
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => 12,
'interval' => 5,
'selected' => array('hour' => '4', 'min' => '30', 'meridian' => 'pm')
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => '12',
'interval' => 5,
'selected' => '2013-04-19 16:30:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => '12',
'interval' => 10,
'selected' => '2013-05-19 00:33:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => '12',
'interval' => 10,
'selected' => '2013-05-19 13:33:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$result = $this->Form->input('Model.start_time', array(
'type' => 'time',
'timeFormat' => '12',
'interval' => 10,
'selected' => '2013-05-19 01:33:00'
));
$this->assertContains('
', $result);
$this->assertContains('
', $result);
$this->assertContains('
', $result);
}
/**
* test form->input() with datetime, date and time types
*
* @return void
*/
public function testInputDatetime() {
$this->markTestIncomplete('Need to revisit once models work again.');
extract($this->dateRegex);
$result = $this->Form->input('prueba', array(
'type' => 'datetime', 'timeFormat' => 24, 'dateFormat' => 'DMY', 'minYear' => 2008,
'maxYear' => date('Y') + 1, 'interval' => 15
));
$result = explode(':', $result);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertNotRegExp('#
#', $result[1]);
$this->assertRegExp('#
#', $result[1]);
$this->assertRegExp('#
#', $result[1]);
//related to ticket #5013
$result = $this->Form->input('Contact.date', array(
'type' => 'date', 'class' => 'customClass', 'onChange' => 'function(){}'
));
$this->assertRegExp('/class="customClass"/', $result);
$this->assertRegExp('/onChange="function\(\)\{\}"/', $result);
$result = $this->Form->input('Contact.date', array(
'type' => 'date', 'id' => 'customId', 'onChange' => 'function(){}'
));
$this->assertRegExp('/id="customIdDay"/', $result);
$this->assertRegExp('/id="customIdMonth"/', $result);
$this->assertRegExp('/onChange="function\(\)\{\}"/', $result);
$result = $this->Form->input('Model.field', array(
'type' => 'datetime', 'timeFormat' => 24, 'id' => 'customID'
));
$this->assertRegExp('/id="customIDDay"/', $result);
$this->assertRegExp('/id="customIDHour"/', $result);
$result = explode('