Yii Пример модели для сохранения картинки
Primary tabs
пример валидации для формы здесь
<?php class Image extends CActiveRecord { public static function model($className=__CLASS__) { return parent::model($className); } // public $name; // public $message_id; // // public $width; //высота // public $height; //ширина // здесь определяем путь до директории // относительно корня protected $_dirpath='images/'; public function rules() // формальная валидация { return array( array('name', 'length', 'min'=>10, 'max'=>200), array('message_id','numerical'), array('width','numerical'), array('height','numerical'), ); } /** * возвращаем имя таблицы БД для данной модели */ public function tableName() { return '{{image}}'; } // cледующий метод отвечает за сохранение новой картинки в папку // и добавление метаинформации об этой картинке в базу // - входным параметром является значение полученное с помощью // CUploadedFile::getInstance($message, 'image'); /**@param $mid - id сообщения - к которому прикреплена запись * @param $message - сформированная модель сообщения - в image уже лежит объект */ // запоняет поля и сохраняет модель public function addImage($message, $mid) { // сохраняем файл $name = sha1(uniqid()); // получаем хэш от случайного значения $ext = CommonLib::getExt($message->image->name); $name = $name . '.' . $ext; // получаем расширение $message->image->saveAs('images/' . $name);// сохраняем файл в указанну директорию // далее работаем с БД $this->name = $name; $this->message_id = $mid; $this->setSize(); // запишем размеры картинки $this->save(); return $this; // возвращаем модель наружу } /** * заполняет поля ширины и высоты модели */ protected function setSize() { $path = $_SERVER["DOCUMENT_ROOT"] . "/" . $this->_dirpath . $this->name; $info = getimagesize($path); $this->width = $info[0]; $this->height = $info[1]; } // это полезно для вывода картинки, прикреплённой к сообщению public function getImageURL() { return Yii::app()->request->hostInfo . "/" . $this->dirpath . $this->name; } public function relations() // задаём отношения с другими классами (User) { return array( 'message' => array(self::BELONGS_TO, 'Message', 'message_id'), ); } }
- Log in to post comments
- 2939 reads