mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 13:02:24 +08:00
Merge pull request #15405 from vladis84/15226-auto-generate-placeholder
Enh #15226: Auto generate placeholder from fields
This commit is contained in:
@ -3,7 +3,7 @@ Yii Framework 2 Change Log
|
|||||||
|
|
||||||
2.0.14 under development
|
2.0.14 under development
|
||||||
------------------------
|
------------------------
|
||||||
|
- Enh #15226: Auto generate placeholder from fields (vladis84)
|
||||||
- Bug #15356: Fixed multiple bugs in `yii\db\Query::getTablesUsedInFrom()` (vladis84, samdark)
|
- Bug #15356: Fixed multiple bugs in `yii\db\Query::getTablesUsedInFrom()` (vladis84, samdark)
|
||||||
- Bug #14157: Add support for loading default value `CURRENT_TIMESTAMP` of MySQL `datetime` field (rossoneri)
|
- Bug #14157: Add support for loading default value `CURRENT_TIMESTAMP` of MySQL `datetime` field (rossoneri)
|
||||||
- Bug #15046: Throw an `yii\web\HeadersAlreadySentException` if headers were sent before web response (dmirogin)
|
- Bug #15046: Throw an `yii\web\HeadersAlreadySentException` if headers were sent before web response (dmirogin)
|
||||||
|
|||||||
@ -1314,6 +1314,8 @@ class BaseHtml
|
|||||||
$options['id'] = static::getInputId($model, $attribute);
|
$options['id'] = static::getInputId($model, $attribute);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self::setActivePlaceholder($model, $attribute, $options);
|
||||||
|
|
||||||
return static::input($type, $name, $value, $options);
|
return static::input($type, $name, $value, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1362,6 +1364,21 @@ class BaseHtml
|
|||||||
return static::activeInput('text', $model, $attribute, $options);
|
return static::activeInput('text', $model, $attribute, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate placeholder from model label.
|
||||||
|
* @param Model $model the model object
|
||||||
|
* @param string $attribute the attribute name or expression. See [[getAttributeName()]] for the format
|
||||||
|
* about attribute expression.
|
||||||
|
* @param array $options the tag options in terms of name-value pairs. These will be rendered as
|
||||||
|
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
|
||||||
|
*/
|
||||||
|
protected static function setActivePlaceholder($model, $attribute, &$options = [])
|
||||||
|
{
|
||||||
|
if (isset($options['placeholder']) && $options['placeholder'] === true) {
|
||||||
|
$options['placeholder'] = $model->getAttributeLabel($attribute);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a hidden input tag for the given model attribute.
|
* Generates a hidden input tag for the given model attribute.
|
||||||
* This method will generate the "name" and "value" tag attributes automatically for the model attribute
|
* This method will generate the "name" and "value" tag attributes automatically for the model attribute
|
||||||
@ -1458,6 +1475,7 @@ class BaseHtml
|
|||||||
$options['id'] = static::getInputId($model, $attribute);
|
$options['id'] = static::getInputId($model, $attribute);
|
||||||
}
|
}
|
||||||
self::normalizeMaxLength($model, $attribute, $options);
|
self::normalizeMaxLength($model, $attribute, $options);
|
||||||
|
self::setActivePlaceholder($model, $attribute, $options);
|
||||||
return static::textarea($name, $value, $options);
|
return static::textarea($name, $value, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1579,6 +1579,24 @@ HTML;
|
|||||||
$actual = Html::activeCheckboxList($model, 'types', ['foo']);
|
$actual = Html::activeCheckboxList($model, 'types', ['foo']);
|
||||||
$this->assertEqualsWithoutLE($expected, $actual);
|
$this->assertEqualsWithoutLE($expected, $actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testActiveTextInput_placeholderFillFromModel()
|
||||||
|
{
|
||||||
|
$model = new HtmlTestModel();
|
||||||
|
|
||||||
|
$html = Html::activeTextInput($model, 'name', ['placeholder' => true]);
|
||||||
|
|
||||||
|
$this->assertContains('placeholder="Name"', $html);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testActiveTextInput_customPlaceholder()
|
||||||
|
{
|
||||||
|
$model = new HtmlTestModel();
|
||||||
|
|
||||||
|
$html = Html::activeTextInput($model, 'name', ['placeholder' => 'Custom placeholder']);
|
||||||
|
|
||||||
|
$this->assertContains('placeholder="Custom placeholder"', $html);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user