You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							104 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
	
	
							104 lines
						
					
					
						
							3.2 KiB
						
					
					
				| <?php | |
|  | |
| namespace common\modules\banners\forms; | |
|  | |
| use common\modules\banners\entities\Banner; | |
| use yii\base\Model; | |
| use Yii; | |
| use yii\web\UploadedFile; | |
|  | |
| class BannerForm extends Model | |
| { | |
|     public $title; | |
|  | |
|     /** | |
|      * @var UploadedFile | |
|      */ | |
|     public $image; | |
|     public $url; | |
|     public $target; | |
|     public $active; | |
|     public $start_at; | |
|     public $end_at; | |
|     public $include_urls; | |
|     public $exclude_urls; | |
|     public $place_id; | |
|  | |
|     public $_banner; | |
|  | |
|     public function __construct(Banner $banner = null, $config = []) | |
|     { | |
|         if ($banner) { | |
|             $this->title        = $banner->title; | |
|             $this->image        = $banner->image; | |
|             $this->url          = $banner->url; | |
|             $this->target       = $banner->target; | |
|             $this->active       = $banner->active; | |
|             $this->start_at     = $banner->start_at; | |
|             $this->end_at       = $banner->end_at; | |
|             $this->include_urls = $banner->include_urls; | |
|             $this->exclude_urls = $banner->exclude_urls; | |
|             $this->place_id     = $banner->place_id; | |
|             $this->_banner      = $banner; | |
|         } | |
|         parent::__construct($config); | |
|     } | |
|  | |
|     public function rules(): array | |
|     { | |
|         return [ | |
|             [['title', 'place_id', 'start_at', 'end_at'], 'required'], | |
|             [['active', 'place_id', 'active'], 'integer'], | |
|             [['title', 'target', 'url'], 'string', 'max' => 255], | |
|             [['include_urls', 'exclude_urls'], 'string'], | |
|             [['image'], 'file', 'extensions' => 'png, jpg, gif'], | |
|             [['start_at', 'end_at'], 'safe'], | |
|             /*[['start_at', 'end_at'], 'date', | |
|                 'format' => 'php:d.m.Y H:i' | |
|             ],*/ | |
|         ]; | |
|     } | |
|  | |
|     public function attributeLabels() | |
|     { | |
|         return [ | |
|             'id'           => Yii::t('banners', 'ID'), | |
|             'title'        => Yii::t('banners', 'Title'), | |
|             'url'          => Yii::t('banners', 'URL'), | |
|             'image'        => Yii::t('banners', 'Image'), | |
|             'target'       => Yii::t('banners', 'Target'), | |
|             'active'       => Yii::t('banners', 'Status'), | |
|             'start_at'     => Yii::t('banners', 'Start At'), | |
|             'end_at'       => Yii::t('banners', 'End At'), | |
|             'created_at'   => Yii::t('banners', 'Created At'), | |
|             'updated_at'   => Yii::t('banners', 'Updated At'), | |
|             'include_urls' => Yii::t('banners', 'Show only on URLs'), | |
|             'exclude_urls' => Yii::t('banners', 'Not show on URLs'), | |
|             'views'        => Yii::t('banners', 'Views'), | |
|             'clicks'       => Yii::t('banners', 'Visits'), | |
|             'place_id'     => Yii::t('banners', 'Place'), | |
|         ]; | |
|     } | |
|  | |
|     public function beforeValidate() | |
|     { | |
|         if (parent::beforeValidate()) { | |
|             $this->image    = UploadedFile::getInstance($this, 'image'); | |
|             $this->start_at = strtotime($this->start_at); | |
|             $this->end_at   = strtotime($this->end_at); | |
|  | |
|             return true; | |
|         } | |
|  | |
|         return false; | |
|     } | |
|  | |
|     /*public function afterValidate() { | |
|         if (parent::afterValidate()) { | |
|             $this->start_at = strtotime($this->start_at); | |
|             $this->end_at = strtotime($this->end_at); | |
|             return true; | |
|         } | |
|         return false; | |
|     }*/ | |
| }
 | |
| 
 |