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
			| 
											8 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;
 | ||
|  | 	}
 | ||
|  | }
 |