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.
		
		
		
		
		
			
		
			
				
					
					
						
							100 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							100 lines
						
					
					
						
							2.7 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; | 
						|
	}*/ | 
						|
}
 | 
						|
 |