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.
66 lines
1.7 KiB
66 lines
1.7 KiB
7 years ago
|
<?php
|
||
|
|
||
|
namespace core\forms;
|
||
|
|
||
|
use core\entities\Slider;
|
||
|
use yii\base\Model;
|
||
|
use Yii;
|
||
|
use yii\validators\ImageValidator;
|
||
|
use yii\web\UploadedFile;
|
||
|
|
||
|
|
||
|
class SliderForm extends Model
|
||
|
{
|
||
|
public $title;
|
||
|
public $tagline;
|
||
|
public $image;
|
||
|
public $url;
|
||
|
public $sort;
|
||
|
|
||
|
private $_slider;
|
||
|
|
||
|
public function __construct(Slider $slider = null, $config = [])
|
||
|
{
|
||
|
if ($slider) {
|
||
|
$this->title = $slider->title;
|
||
|
$this->tagline = $slider->tagline;
|
||
|
$this->url = $slider->url;
|
||
|
$this->sort = $slider->sort;
|
||
|
$this->_slider = $slider;
|
||
|
}
|
||
|
parent::__construct($config);
|
||
|
}
|
||
|
|
||
|
public function rules(): array
|
||
|
{
|
||
|
$imageValidator = new ImageValidator();
|
||
|
$maxSize = $imageValidator->getSizeLimit() < 20*1024*1024 ? $imageValidator->getSizeLimit() : 20*1024*1024;
|
||
|
return [
|
||
|
[['title', 'image'], 'required', 'on' => Slider::SCENARIO_CREATE],
|
||
|
[['title'], 'required', 'on' => Slider::SCENARIO_UPDATE],
|
||
|
[['sort'], 'integer'],
|
||
|
[['title'], 'string', 'max' => 128],
|
||
|
[['tagline', 'url'], 'string', 'max' => 255],
|
||
|
[['image'], 'image', 'extensions' => 'jpg,png,gif', 'skipOnEmpty' => true, 'maxSize' => $maxSize],
|
||
|
];
|
||
|
}
|
||
|
|
||
|
public function attributeLabels() {
|
||
|
return [
|
||
|
'title' => Yii::t('slider', 'Title'),
|
||
|
'tagline' => Yii::t('slider', 'Tagline'),
|
||
|
'image' => Yii::t('slider', 'Image'),
|
||
|
'url' => Yii::t('slider', 'URL'),
|
||
|
'sort' => Yii::t('slider', 'Sort'),
|
||
|
];
|
||
|
}
|
||
|
|
||
|
public function beforeValidate()
|
||
|
{
|
||
|
if (parent::beforeValidate()) {
|
||
|
$this->image = UploadedFile::getInstance($this, 'image');
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
}
|