Final Class Yiisoft\Yii\Gii\Validator\TemplateRuleHandler
| Inheritance | Yiisoft\Yii\Gii\Validator\TemplateRuleHandler |
|---|---|
| Implements | Yiisoft\Validator\RuleHandlerInterface |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Yii\Gii\Validator\TemplateRuleHandler | |
| validate() | Validates the template selection. | Yiisoft\Yii\Gii\Validator\TemplateRuleHandler |
Method Details
| public __construct( \Yiisoft\Aliases\Aliases $aliases, Yiisoft\Yii\Gii\GiiInterface $gii, Yiisoft\Yii\Gii\ParametersProvider $parametersProvider ): mixed | ||
| $aliases | \Yiisoft\Aliases\Aliases | |
| $gii | Yiisoft\Yii\Gii\GiiInterface | |
| $parametersProvider | Yiisoft\Yii\Gii\ParametersProvider | |
public function __construct(
private readonly Aliases $aliases,
private readonly GiiInterface $gii,
private readonly ParametersProvider $parametersProvider,
) {
}
Validates the template selection.
This method validates whether the user selects an existing template and the template contains all required template files as specified in \Yiisoft\Yii\Gii\Validator\requiredTemplates().
| public validate( mixed $value, object $rule, \Yiisoft\Validator\ValidationContext $context ): \Yiisoft\Validator\Result | ||
| $value | mixed | |
| $rule | object | |
| $context | \Yiisoft\Validator\ValidationContext | |
public function validate(mixed $value, object $rule, ValidationContext $context): Result
{
if (!$rule instanceof TemplateRule) {
throw new UnexpectedRuleException(TemplateRule::class, $rule);
}
$result = new Result();
if ($value === 'default') {
return $result;
}
if (!is_string($value)) {
$result->addError(sprintf('Value must be a string, %s given.".', gettype($value)));
return $result;
}
$command = $context->getRawData();
if (!$command instanceof GeneratorCommandInterface) {
throw new RuntimeException(sprintf(
'Unsupported dataset class "%s".',
get_debug_type($command)
));
}
$generator = $this->getGenerator($command);
$templates = $this->parametersProvider->getTemplates($generator::getId());
if ($templates === []) {
return $result;
}
if (!isset($templates[$value])) {
$result->addError(
message: 'Template "{template}" does not exist. Known templates: {templates}',
parameters: [
'template' => $value,
'templates' => implode(', ', array_keys($templates)),
],
);
return $result;
}
$templatePath = $templates[$value];
foreach ($generator->getRequiredTemplates() as $template) {
if (!is_file($this->aliases->get($templatePath . '/' . $template))) {
$result->addError(
message: 'Unable to find the required code template file "{template}".',
parameters: ['template' => $template],
);
}
}
return $result;
}
Signup or Login in order to comment.