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