
Предлагаю сделать следущее
1) Создать компонент common/components/ProjectComponent.php
<?php
/**
* @link https://cms.skeeks.com/
* @copyright Copyright (c) 2010 SkeekS
* @license https://cms.skeeks.com/license/
* @author Semenov Alexander <semenov@skeeks.com>
*/
namespace common\components;
use skeeks\cms\relatedProperties\models\RelatedPropertiesModel;
use skeeks\cms\validators\PhoneValidator;
use skeeks\modules\cms\form2\models\Form2FormSend;
use yii\base\BootstrapInterface;
use yii\base\Component;
use yii\base\Event;
use yii\base\Model;
/**
* @author Semenov Alexander <semenov@skeeks.com>
*/
class ProjectComponent extends Component implements BootstrapInterface
{
public function bootstrap($application)
{
Event::on(RelatedPropertiesModel::class, Model::EVENT_BEFORE_VALIDATE, function($e) {
/**
* @var $model RelatedPropertiesModel
* @var $formSend Form2FormSend
*/
$model = $e->sender;
$formSend = $model->relatedElementModel;
if ($formSend->form->code == 'calculate') {
$model->addRule(['email'], 'email', ['enableIDN' => true]);
$model->addRule(['phone'], PhoneValidator::class);
//print_r($model->toArray());die;
}
});
}
}
2) Поправить файл frontend/config/main.php
'bootstrap' => ['project'],
'components' => [
'project' => \common\components\ProjectComponent::class,
]
Таким образом вы перехватываете событие начала валдиации данных (вернее даже, событие, которое возникает до начала валидации), и пишите свою валидацию, воплощая любую логику!
-
Семенов Александр
- /
- 18.04.2019
- /
- 0
- /
- 8230
Alle Kommentare (0)