"Адрес", 'module_install_angle' => "Угол установки фотомодулей", 'latitude' => "Широта", 'longitude' => "Долгота", 'south_deviation' => "Отклонение от юга", 'power_station_type' => "Тип станции", 'area' => "Площадь", 'power' => "Мощность", 'budget' => "Бюджет", 'auth_day' => "Суточное потребление в кВт*ч", 'auth_month' => "Месячное потребление в кВт*ч", 'auth_pwr_all' => "Мощность всех потребителей потребление в кВт*ч", 'auth_pwr_days' => "Суток автономности", ]; public $attributeValues = []; public function __set($name, $value) { if (in_array($name, self::calculator_attributes)) { if (isset($value) && !empty($value)) { $this->attributeValues[ $name ] = $value; } } else { parent::__set($name, $value); } } public function __get($name) { if (in_array($name, self::calculator_attributes)) { return $this->attributeValues[ $name ]??''; } else { return parent::__get($name); } } public function getCalculatorAttributes() { return $this->attributeValues; } public function scenarios() { return array_merge( parent::scenarios(), [ parent::SCENARIO_FEEDBACK => [ 'name', 'email', 'phone', 'message', 'returnUrl', 'topic', ], parent::SCENARIO_CALLBACK => [ 'name', 'phone', 'message', 'returnUrl', 'topic', ], self::SCENARIO_CALCULATOR => array_merge( [ 'name', 'phone', 'email', 'returnUrl', 'topic', 'calc_json_info', ], self::calculator_attributes ), ] ); } public function rules() { return array_merge( parent::rules(), [ [ [ 'topic', ], 'required', ], [ [ 'topic', ], 'string', 'max' => 100, ], [ [ 'name', 'phone', 'email', 'calc_json_info', 'adress', 'module_install_angle', ], 'required', 'on' => self::SCENARIO_CALCULATOR, ], [ ['message'],'required','message'=>'Поле сообщение обязательное для заполнения'], [ ['message'],'string','min'=>10], [['phone'],'string','length'=>[17,17],'message'=>'Введите данные в форму согласно заданному шаблону: +38(132) 456 78 89'], [['phone'],'match','pattern'=>'/\+3?8?\(?([\d]{3}([ .-]?))\)?([ .-]?)([\d]{3}([ .-]?))\2([\d]{2}([ .-]?))([\d]{2}([ .-]?))/','message'=>'некорректный ввод поля. Значение должно иметь вид: +38(123) 456 78 79'], [['name','email'],'string','length'=>[5,25]], [['name'],'match','pattern' => '/^[а-яА-ЯёЁa-zA-Z\-\s]+$/','message'=> \Yii::t('app', 'Имя может состоять только из английский или латинских символов')], [['email'],'email'], ] ); } public function setCalcJsonInfo() { $this->calc_json_info = json_encode($this->attributeValues); } public function getCalcJsonInfo() { return json_decode($this->calc_json_info); } }