mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 11:06:15 +00:00
Made form helper pick up field definitions outside the current context
Made form helper handle maxlength for float fields properly, fixes #4724 git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@7021 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
7402680cc1
commit
52bae8a7bf
2 changed files with 29 additions and 8 deletions
|
@ -541,11 +541,18 @@ class FormHelper extends AppHelper {
|
||||||
} elseif (in_array($this->field(), array('psword', 'passwd', 'password'))) {
|
} elseif (in_array($this->field(), array('psword', 'passwd', 'password'))) {
|
||||||
$options['type'] = 'password';
|
$options['type'] = 'password';
|
||||||
} elseif (isset($this->fieldset['fields'][$this->field()])) {
|
} elseif (isset($this->fieldset['fields'][$this->field()])) {
|
||||||
$type = $this->fieldset['fields'][$this->field()]['type'];
|
$fieldDef = $this->fieldset['fields'][$this->field()];
|
||||||
|
$type = $fieldDef['type'];
|
||||||
$primaryKey = $this->fieldset['key'];
|
$primaryKey = $this->fieldset['key'];
|
||||||
} elseif (ClassRegistry::isKeySet($this->model())) {
|
} elseif (ClassRegistry::isKeySet($this->model())) {
|
||||||
$model =& ClassRegistry::getObject($this->model());
|
$model =& ClassRegistry::getObject($this->model());
|
||||||
$type = $model->getColumnType($this->field());
|
$type = $model->getColumnType($this->field());
|
||||||
|
$fieldDef = $model->schema();
|
||||||
|
if (isset($fieldDef[$this->field()])) {
|
||||||
|
$fieldDef = $fieldDef[$this->field()];
|
||||||
|
} else {
|
||||||
|
$fieldDef = array();
|
||||||
|
}
|
||||||
$primaryKey = $model->primaryKey;
|
$primaryKey = $model->primaryKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -587,10 +594,12 @@ class FormHelper extends AppHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!array_key_exists('maxlength', $options) && $options['type'] == 'text') {
|
$autoLength = (!array_key_exists('maxlength', $options) && isset($fieldDef['length']));
|
||||||
if (!empty($this->fieldset['fields'][$this->field()]['length'])) {
|
if ($autoLength && $options['type'] == 'text') {
|
||||||
$options['maxlength'] = $this->fieldset['fields'][$this->field()]['length'];
|
$options['maxlength'] = $fieldDef['length'];
|
||||||
}
|
}
|
||||||
|
if ($autoLength && $fieldDef['type'] == 'float') {
|
||||||
|
$options['maxlength'] = array_sum(explode(',', $fieldDef['length']))+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$out = '';
|
$out = '';
|
||||||
|
|
|
@ -142,6 +142,7 @@ class ValidateUser extends CakeTestModel {
|
||||||
'id' => array('type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'),
|
'id' => array('type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'),
|
||||||
'name' => array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
|
'name' => array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
|
||||||
'email' => array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
|
'email' => array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
|
||||||
|
'balance' => array('type' => 'float', 'null' => false, 'length' => '5,2'),
|
||||||
'created' => array('type' => 'date', 'null' => '1', 'default' => '', 'length' => ''),
|
'created' => array('type' => 'date', 'null' => '1', 'default' => '', 'length' => ''),
|
||||||
'updated' => array('type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null)
|
'updated' => array('type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null)
|
||||||
);
|
);
|
||||||
|
@ -604,7 +605,7 @@ class FormHelperTest extends CakeTestCase {
|
||||||
'label' => array('for'),
|
'label' => array('for'),
|
||||||
'preg:/[^<]+/',
|
'preg:/[^<]+/',
|
||||||
'/label',
|
'/label',
|
||||||
'input' => array('type' => 'text', 'name', 'value' => '', 'id', 'class' => 'form-error'),
|
'input' => array('type' => 'text', 'name', 'value' => '', 'id', 'class' => 'form-error', 'maxlength' => 255),
|
||||||
array('div' => array('class' => 'error-message')),
|
array('div' => array('class' => 'error-message')),
|
||||||
'This field cannot be left blank',
|
'This field cannot be left blank',
|
||||||
'/div',
|
'/div',
|
||||||
|
@ -689,13 +690,24 @@ class FormHelperTest extends CakeTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
function testFormInput() {
|
function testFormInput() {
|
||||||
|
$result = $this->Form->input('ValidateUser.balance');
|
||||||
|
$expected = array(
|
||||||
|
'div' => array('class'),
|
||||||
|
'label' => array('for'),
|
||||||
|
'Balance',
|
||||||
|
'/label',
|
||||||
|
'input' => array('name', 'type' => 'text', 'maxlength' => 8, 'value' => '', 'id'),
|
||||||
|
'/div',
|
||||||
|
);
|
||||||
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$result = $this->Form->input('Contact.email', array('id' => 'custom'));
|
$result = $this->Form->input('Contact.email', array('id' => 'custom'));
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'div' => array('class' => 'input text'),
|
'div' => array('class' => 'input text'),
|
||||||
'label' => array('for' => 'custom'),
|
'label' => array('for' => 'custom'),
|
||||||
'Email',
|
'Email',
|
||||||
'/label',
|
'/label',
|
||||||
array('input' => array('type' => 'text', 'name' => 'data[Contact][email]', 'value' => '', 'id' => 'custom')),
|
array('input' => array('type' => 'text', 'name' => 'data[Contact][email]', 'value' => '', 'id' => 'custom', 'maxlength' => 255)),
|
||||||
'/div'
|
'/div'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
@ -801,7 +813,7 @@ class FormHelperTest extends CakeTestCase {
|
||||||
'label' => array('for' => 'ContactPhone'),
|
'label' => array('for' => 'ContactPhone'),
|
||||||
'Phone',
|
'Phone',
|
||||||
'/label',
|
'/label',
|
||||||
array('input' => array('type' => 'text', 'name' => 'data[Contact][phone]', 'value' => 'Hello & World > weird chars', 'id' => 'ContactPhone')),
|
array('input' => array('type' => 'text', 'name' => 'data[Contact][phone]', 'value' => 'Hello & World > weird chars', 'id' => 'ContactPhone', 'maxlength' => 255)),
|
||||||
'/div'
|
'/div'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
Loading…
Add table
Reference in a new issue