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