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