0 follower

Abstract Class Yiisoft\Form\Field\Base\PartsField

InheritanceYiisoft\Form\Field\Base\PartsField » Yiisoft\Form\Field\Base\BaseField » Yiisoft\Widget\Widget
SubclassesYiisoft\Form\Field\Base\ButtonField, Yiisoft\Form\Field\Base\DateTimeInputField, Yiisoft\Form\Field\Base\InputField, Yiisoft\Form\Field\Button, Yiisoft\Form\Field\ButtonGroup, Yiisoft\Form\Field\Checkbox, Yiisoft\Form\Field\CheckboxList, Yiisoft\Form\Field\Color, Yiisoft\Form\Field\Date, Yiisoft\Form\Field\DateTimeLocal, Yiisoft\Form\Field\Email, Yiisoft\Form\Field\Fieldset, Yiisoft\Form\Field\File, Yiisoft\Form\Field\Hidden, Yiisoft\Form\Field\Image, Yiisoft\Form\Field\Number, Yiisoft\Form\Field\Password, Yiisoft\Form\Field\RadioList, Yiisoft\Form\Field\Range, Yiisoft\Form\Field\ResetButton, Yiisoft\Form\Field\Select, Yiisoft\Form\Field\SubmitButton, Yiisoft\Form\Field\Telephone, Yiisoft\Form\Field\Text, Yiisoft\Form\Field\Textarea, Yiisoft\Form\Field\Time, Yiisoft\Form\Field\Url

Public Methods

Hide inherited methods

Method Description Defined By
addContainerAttributes() Yiisoft\Form\Field\Base\BaseField
addContainerClass() Add one or more CSS classes to the container tag. Yiisoft\Form\Field\Base\BaseField
addErrorAttributes() Yiisoft\Form\Field\Base\PartsField
addErrorClass() Add one or more CSS classes to the error tag. Yiisoft\Form\Field\Base\PartsField
addHintAttributes() Yiisoft\Form\Field\Base\PartsField
addHintClass() Add one or more CSS classes to the hint tag. Yiisoft\Form\Field\Base\PartsField
addInputContainerAttributes() Yiisoft\Form\Field\Base\PartsField
addInputContainerClass() Add one or more CSS classes to the input container tag. Yiisoft\Form\Field\Base\PartsField
addLabelAttributes() Yiisoft\Form\Field\Base\PartsField
addLabelClass() Add one or more CSS classes to the label tag. Yiisoft\Form\Field\Base\PartsField
afterInput() Yiisoft\Form\Field\Base\PartsField
beforeInput() Yiisoft\Form\Field\Base\PartsField
begin() Yiisoft\Form\Field\Base\BaseField
containerAttributes() Yiisoft\Form\Field\Base\BaseField
containerClass() Replace container tag CSS classes with a new set of classes. Yiisoft\Form\Field\Base\BaseField
containerId() Set container tag ID. Yiisoft\Form\Field\Base\BaseField
containerTag() Yiisoft\Form\Field\Base\BaseField
error() Yiisoft\Form\Field\Base\PartsField
errorAttributes() Yiisoft\Form\Field\Base\PartsField
errorClass() Replace error tag CSS classes with a new set of classes. Yiisoft\Form\Field\Base\PartsField
errorConfig() Yiisoft\Form\Field\Base\PartsField
errorId() Set error tag ID. Yiisoft\Form\Field\Base\PartsField
hideLabel() Yiisoft\Form\Field\Base\PartsField
hint() Yiisoft\Form\Field\Base\PartsField
hintAttributes() Yiisoft\Form\Field\Base\PartsField
hintClass() Replace hint tag CSS classes with a new set of classes. Yiisoft\Form\Field\Base\PartsField
hintConfig() Yiisoft\Form\Field\Base\PartsField
hintId() Set hint tag ID. Yiisoft\Form\Field\Base\PartsField
inputContainerAttributes() Yiisoft\Form\Field\Base\PartsField
inputContainerClass() Replace input container tag CSS classes with a new set of classes. Yiisoft\Form\Field\Base\PartsField
inputContainerTag() Yiisoft\Form\Field\Base\PartsField
label() Yiisoft\Form\Field\Base\PartsField
labelAttributes() Yiisoft\Form\Field\Base\PartsField
labelClass() Replace label tag CSS classes with a new set of classes. Yiisoft\Form\Field\Base\PartsField
labelConfig() Yiisoft\Form\Field\Base\PartsField
labelId() Set label tag ID. Yiisoft\Form\Field\Base\PartsField
render() Yiisoft\Form\Field\Base\BaseField
template() Set layout template for render a field. Yiisoft\Form\Field\Base\PartsField
templateBegin() Yiisoft\Form\Field\Base\PartsField
templateEnd() Yiisoft\Form\Field\Base\PartsField
token() Yiisoft\Form\Field\Base\PartsField
tokens() Yiisoft\Form\Field\Base\PartsField
useContainer() Yiisoft\Form\Field\Base\BaseField

Constants

Hide inherited constants

Constant Value Description Defined By
BUILTIN_TOKENS [ '{input}', '{label}', '{hint}', '{error}', ] Yiisoft\Form\Field\Base\PartsField

Property Details

Hide inherited properties

$afterInput protected property
protected string|\Stringable $afterInput ''
$beforeInput protected property
protected string|\Stringable $beforeInput ''
$hideLabel protected property
protected boolean|null $hideLabel null
$inputContainerAttributes protected property
$inputContainerTag protected property
protected string|null $inputContainerTag null
$label protected property
protected string|null $label null
$template protected property
protected string $template "{label}\n{input}\n{hint}\n{error}"
$templateBegin protected property
protected string $templateBegin "{label}\n{input}"
$templateEnd protected property
protected string $templateEnd "{input}\n{hint}\n{error}"

Method Details

Hide inherited methods

addContainerAttributes() public method
public Yiisoft\Form\Field\Base\PartsField addContainerAttributes ( array $attributes )
$attributes array

                final public function addContainerAttributes(array $attributes): static
{
    $new = clone $this;
    $new->containerAttributes = array_merge($new->containerAttributes, $attributes);
    return $new;
}

            
addContainerClass() public method

Defined in: Yiisoft\Form\Field\Base\BaseField::addContainerClass()

Add one or more CSS classes to the container tag.

public Yiisoft\Form\Field\Base\PartsField addContainerClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function addContainerClass(?string ...$class): static
{
    $new = clone $this;
    Html::addCssClass($new->containerAttributes, $class);
    return $new;
}

            
addErrorAttributes() public method

public Yiisoft\Form\Field\Base\PartsField addErrorAttributes ( array $attributes )
$attributes array

                final public function addErrorAttributes(array $attributes): static
{
    $new = clone $this;
    $new->errorAttributes = array_merge($new->errorAttributes, $attributes);
    return $new;
}

            
addErrorClass() public method

Add one or more CSS classes to the error tag.

public Yiisoft\Form\Field\Base\PartsField addErrorClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function addErrorClass(?string ...$class): static
{
    $new = clone $this;
    Html::addCssClass($new->errorAttributes, $class);
    return $new;
}

            
addHintAttributes() public method

public Yiisoft\Form\Field\Base\PartsField addHintAttributes ( array $attributes )
$attributes array

                final public function addHintAttributes(array $attributes): static
{
    $new = clone $this;
    $new->hintAttributes = array_merge($new->hintAttributes, $attributes);
    return $new;
}

            
addHintClass() public method

Add one or more CSS classes to the hint tag.

public Yiisoft\Form\Field\Base\PartsField addHintClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function addHintClass(?string ...$class): static
{
    $new = clone $this;
    Html::addCssClass($new->hintAttributes, $class);
    return $new;
}

            
addInputContainerAttributes() public method

public Yiisoft\Form\Field\Base\PartsField addInputContainerAttributes ( array $attributes )
$attributes array

                final public function addInputContainerAttributes(array $attributes): static
{
    $new = clone $this;
    $new->inputContainerAttributes = array_merge($new->inputContainerAttributes, $attributes);
    return $new;
}

            
addInputContainerClass() public method

Add one or more CSS classes to the input container tag.

public Yiisoft\Form\Field\Base\PartsField addInputContainerClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function addInputContainerClass(?string ...$class): static
{
    $new = clone $this;
    Html::addCssClass($new->inputContainerAttributes, $class);
    return $new;
}

            
addLabelAttributes() public method

public Yiisoft\Form\Field\Base\PartsField addLabelAttributes ( array $attributes )
$attributes array

                final public function addLabelAttributes(array $attributes): static
{
    $new = clone $this;
    $new->labelAttributes = array_merge($new->labelAttributes, $attributes);
    return $new;
}

            
addLabelClass() public method

Add one or more CSS classes to the label tag.

public Yiisoft\Form\Field\Base\PartsField addLabelClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function addLabelClass(?string ...$class): static
{
    $new = clone $this;
    Html::addCssClass($new->labelAttributes, $class);
    return $new;
}

            
afterInput() public method

public Yiisoft\Form\Field\Base\PartsField afterInput ( string|\Stringable $content )
$content string|\Stringable

                final public function afterInput(string|Stringable $content): static
{
    $new = clone $this;
    $new->afterInput = $content;
    return $new;
}

            
beforeInput() public method

public Yiisoft\Form\Field\Base\PartsField beforeInput ( string|\Stringable $content )
$content string|\Stringable

                final public function beforeInput(string|Stringable $content): static
{
    $new = clone $this;
    $new->beforeInput = $content;
    return $new;
}

            
beforeRender() protected method
protected void beforeRender ( )

                protected function beforeRender(): void
{
}

            
begin() public method
public string|null begin ( )

                final public function begin(): ?string
{
    parent::begin();
    $this->isStartedByBegin = true;
    $this->beforeRender();
    $content = $this->generateBeginContent();
    return $this->renderOpenContainerAndContent($content);
}

            
containerAttributes() public method
public Yiisoft\Form\Field\Base\PartsField containerAttributes ( array $attributes )
$attributes array

                final public function containerAttributes(array $attributes): static
{
    $new = clone $this;
    $new->containerAttributes = $attributes;
    return $new;
}

            
containerClass() public method

Defined in: Yiisoft\Form\Field\Base\BaseField::containerClass()

Replace container tag CSS classes with a new set of classes.

public Yiisoft\Form\Field\Base\PartsField containerClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function containerClass(?string ...$class): static
{
    $new = clone $this;
    $new->containerAttributes['class'] = array_filter($class, static fn ($c) => $c !== null);
    return $new;
}

            
containerId() public method

Defined in: Yiisoft\Form\Field\Base\BaseField::containerId()

Set container tag ID.

public Yiisoft\Form\Field\Base\PartsField containerId ( string|null $id )
$id string|null

Container tag ID.

                final public function containerId(?string $id): static
{
    $new = clone $this;
    $new->containerAttributes['id'] = $id;
    return $new;
}

            
containerTag() public method
public Yiisoft\Form\Field\Base\PartsField containerTag ( string $tag )
$tag string

                final public function containerTag(string $tag): static
{
    if ($tag === '') {
        throw new InvalidArgumentException('Tag name cannot be empty.');
    }
    $new = clone $this;
    $new->containerTag = $tag;
    return $new;
}

            
error() public method

public Yiisoft\Form\Field\Base\PartsField error ( string|null $message, string $messages )
$message string|null
$messages string

                final public function error(?string $message, string ...$messages): static
{
    $new = clone $this;
    $new->errorConfig['message()'] = [$message, ...$messages];
    return $new;
}

            
errorAttributes() public method

public Yiisoft\Form\Field\Base\PartsField errorAttributes ( array $attributes )
$attributes array

                final public function errorAttributes(array $attributes): static
{
    $new = clone $this;
    $new->errorAttributes = $attributes;
    $new->replaceErrorAttributes = true;
    return $new;
}

            
errorClass() public method

Replace error tag CSS classes with a new set of classes.

public Yiisoft\Form\Field\Base\PartsField errorClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function errorClass(?string ...$class): static
{
    $new = clone $this;
    $new->errorAttributes['class'] = $class;
    $new->replaceErrorClass = true;
    return $new;
}

            
errorConfig() public method

public Yiisoft\Form\Field\Base\PartsField errorConfig ( array $config )
$config array

                final public function errorConfig(array $config): static
{
    $new = clone $this;
    $new->errorConfig = $config;
    return $new;
}

            
errorId() public method

Set error tag ID.

public Yiisoft\Form\Field\Base\PartsField errorId ( string|null $id )
$id string|null

Error tag ID.

                final public function errorId(?string $id): static
{
    $new = clone $this;
    $new->errorAttributes['id'] = $id;
    return $new;
}

            
generateBeginContent() protected method

protected string generateBeginContent ( )

                final protected function generateBeginContent(): string
{
    $parts = [
        '{input}' => $this->generateBeginInput(),
        '{label}' => ($this->hideLabel ?? $this->shouldHideLabel()) ? '' : $this->generateLabel(),
        '{hint}' => $this->generateHint(),
        '{error}' => $this->generateError(),
    ];
    return $this->makeContent($this->templateBegin, $parts);
}

            
generateBeginInput() protected method

protected string generateBeginInput ( )

                protected function generateBeginInput(): string
{
    return '';
}

            
generateContent() protected method

protected string|null generateContent ( )

                final protected function generateContent(): ?string
{
    $parts = [
        '{input}' => $this->generateInputContainerBegin()
            . $this->beforeInput
            . $this->generateInput()
            . $this->afterInput
            . $this->generateInputContainerEnd(),
        '{label}' => ($this->hideLabel ?? $this->shouldHideLabel()) ? '' : $this->generateLabel(),
        '{hint}' => $this->generateHint(),
        '{error}' => $this->generateError(),
    ];
    return $this->makeContent($this->template, $parts);
}

            
generateEndContent() protected method

protected string generateEndContent ( )

                final protected function generateEndContent(): string
{
    $parts = [
        '{input}' => $this->generateEndInput(),
        '{label}' => ($this->hideLabel ?? $this->shouldHideLabel()) ? '' : $this->generateLabel(),
        '{hint}' => $this->generateHint(),
        '{error}' => $this->generateError(),
    ];
    return $this->makeContent($this->templateEnd, $parts);
}

            
generateEndInput() protected method

protected string generateEndInput ( )

                protected function generateEndInput(): string
{
    return '';
}

            
generateInput() protected method

protected string generateInput ( )

                protected function generateInput(): string
{
    return '';
}

            
getThemeConfig() protected static method
protected static array getThemeConfig ( string|null $theme )
$theme string|null

                final protected static function getThemeConfig(?string $theme): array
{
    return ThemeContainer::getTheme($theme)?->getFieldConfig(static::class) ?? [];
}

            
hasCustomError() protected method

protected boolean hasCustomError ( )

                final protected function hasCustomError(): bool
{
    return isset($this->errorConfig['message()']);
}

            
hideLabel() public method

public Yiisoft\Form\Field\Base\PartsField hideLabel ( boolean|null $hide true )
$hide boolean|null

                final public function hideLabel(?bool $hide = true): static
{
    $new = clone $this;
    $new->hideLabel = $hide;
    return $new;
}

            
hint() public method

public Yiisoft\Form\Field\Base\PartsField hint ( string|null $content )
$content string|null

                final public function hint(?string $content): static
{
    $new = clone $this;
    $new->hintConfig['content()'] = [$content];
    return $new;
}

            
hintAttributes() public method

public Yiisoft\Form\Field\Base\PartsField hintAttributes ( array $attributes )
$attributes array

                final public function hintAttributes(array $attributes): static
{
    $new = clone $this;
    $new->hintAttributes = $attributes;
    $new->replaceHintAttributes = true;
    return $new;
}

            
hintClass() public method

Replace hint tag CSS classes with a new set of classes.

public Yiisoft\Form\Field\Base\PartsField hintClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function hintClass(?string ...$class): static
{
    $new = clone $this;
    $new->hintAttributes['class'] = $class;
    $new->replaceHintClass = true;
    return $new;
}

            
hintConfig() public method

public Yiisoft\Form\Field\Base\PartsField hintConfig ( array $config )
$config array

                final public function hintConfig(array $config): static
{
    $new = clone $this;
    $new->hintConfig = $config;
    return $new;
}

            
hintId() public method

Set hint tag ID.

public Yiisoft\Form\Field\Base\PartsField hintId ( string|null $id )
$id string|null

Hint tag ID.

                final public function hintId(?string $id): static
{
    $new = clone $this;
    $new->hintAttributes['id'] = $id;
    return $new;
}

            
inputContainerAttributes() public method

public Yiisoft\Form\Field\Base\PartsField inputContainerAttributes ( array $attributes )
$attributes array

                final public function inputContainerAttributes(array $attributes): static
{
    $new = clone $this;
    $new->inputContainerAttributes = $attributes;
    return $new;
}

            
inputContainerClass() public method

Replace input container tag CSS classes with a new set of classes.

public Yiisoft\Form\Field\Base\PartsField inputContainerClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function inputContainerClass(?string ...$class): static
{
    $new = clone $this;
    $new->inputContainerAttributes['class'] = array_filter($class, static fn ($c) => $c !== null);
    return $new;
}

            
inputContainerTag() public method

public Yiisoft\Form\Field\Base\PartsField inputContainerTag ( string|null $tag )
$tag string|null

                final public function inputContainerTag(?string $tag): static
{
    if ($tag === '') {
        throw new InvalidArgumentException('Tag name cannot be empty.');
    }
    $new = clone $this;
    $new->inputContainerTag = $tag;
    return $new;
}

            
label() public method

public Yiisoft\Form\Field\Base\PartsField label ( string|null $content )
$content string|null

                final public function label(?string $content): static
{
    $new = clone $this;
    $new->label = $content;
    return $new;
}

            
labelAttributes() public method

public Yiisoft\Form\Field\Base\PartsField labelAttributes ( array $attributes )
$attributes array

                final public function labelAttributes(array $attributes): static
{
    $new = clone $this;
    $new->labelAttributes = $attributes;
    $new->replaceLabelAttributes = true;
    return $new;
}

            
labelClass() public method

Replace label tag CSS classes with a new set of classes.

public Yiisoft\Form\Field\Base\PartsField labelClass ( string|null $class )
$class string|null

One or many CSS classes.

                final public function labelClass(?string ...$class): static
{
    $new = clone $this;
    $new->labelAttributes['class'] = $class;
    $new->replaceLabelClass = true;
    return $new;
}

            
labelConfig() public method

public Yiisoft\Form\Field\Base\PartsField labelConfig ( array $config )
$config array

                final public function labelConfig(array $config): static
{
    $new = clone $this;
    $new->labelConfig = $config;
    return $new;
}

            
labelId() public method

Set label tag ID.

public Yiisoft\Form\Field\Base\PartsField labelId ( string|null $id )
$id string|null

Label tag ID.

                final public function labelId(?string $id): static
{
    $new = clone $this;
    $new->labelAttributes['id'] = $id;
    return $new;
}

            
prepareContainerAttributes() protected method
protected void prepareContainerAttributes ( array &$attributes )
$attributes array

                protected function prepareContainerAttributes(array &$attributes): void
{
}

            
render() public method
public string render ( )

                final public function render(): string
{
    if ($this->isStartedByBegin) {
        $this->isStartedByBegin = false;
        return $this->renderEnd();
    }
    $this->beforeRender();
    $content = $this->generateContent();
    if ($content === null) {
        $this->enrichment = [];
        return '';
    }
    $result = $this->renderOpenContainerAndContent($content);
    if ($this->useContainer) {
        $result .= "\n" . Html::closeTag($this->containerTag);
    }
    $this->enrichment = [];
    return $result;
}

            
renderError() protected method

protected string renderError ( Yiisoft\Form\Field\Part\Error $error )
$error Yiisoft\Form\Field\Part\Error

                protected function renderError(Error $error): string
{
    return $error->render();
}

            
renderHint() protected method

protected string renderHint ( Yiisoft\Form\Field\Part\Hint $hint )
$hint Yiisoft\Form\Field\Part\Hint

                protected function renderHint(Hint $hint): string
{
    return $hint->render();
}

            
renderLabel() protected method

protected string renderLabel ( Yiisoft\Form\Field\Part\Label $label )
$label Yiisoft\Form\Field\Part\Label

                protected function renderLabel(Label $label): string
{
    return $label->render();
}

            
shouldHideLabel() protected method

protected boolean shouldHideLabel ( )

                protected function shouldHideLabel(): bool
{
    return false;
}

            
template() public method

Set layout template for render a field.

public Yiisoft\Form\Field\Base\PartsField template ( string $template )
$template string

                final public function template(string $template): static
{
    $new = clone $this;
    $new->template = $template;
    return $new;
}

            
templateBegin() public method

public Yiisoft\Form\Field\Base\PartsField templateBegin ( string $template )
$template string

                final public function templateBegin(string $template): static
{
    $new = clone $this;
    $new->templateBegin = $template;
    return $new;
}

            
templateEnd() public method

public Yiisoft\Form\Field\Base\PartsField templateEnd ( string $template )
$template string

                final public function templateEnd(string $template): static
{
    $new = clone $this;
    $new->templateEnd = $template;
    return $new;
}

            
token() public method

public Yiisoft\Form\Field\Base\PartsField token ( string $token, string|\Stringable $value )
$token string
$value string|\Stringable

                final public function token(string $token, string|Stringable $value): static
{
    $this->validateToken($token);
    $new = clone $this;
    $new->extraTokens[$token] = $value;
    return $new;
}

            
tokens() public method

public Yiisoft\Form\Field\Base\PartsField tokens ( array $tokens )
$tokens array

                final public function tokens(array $tokens): static
{
    $new = clone $this;
    foreach ($tokens as $token => $value) {
        if (!is_string($token)) {
            throw new InvalidArgumentException(
                sprintf(
                    'Token should be string. %s given.',
                    get_debug_type($token),
                )
            );
        }
        if (!is_string($value) && !$value instanceof Stringable) {
            throw new InvalidArgumentException(
                sprintf(
                    'Token value should be string or Stringable. %s given.',
                    get_debug_type($value),
                )
            );
        }
        $this->validateToken($token);
        $new->extraTokens[$token] = $value;
    }
    return $new;
}

            
useContainer() public method
public Yiisoft\Form\Field\Base\PartsField useContainer ( boolean $use )
$use boolean

                final public function useContainer(bool $use): static
{
    $new = clone $this;
    $new->useContainer = $use;
    return $new;
}