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; |
|
}*/ |
|
}
|
|
|