Hi,
I have a structure problem : i have a model named "Projets", and another one named "ImagesProjets". The latter stores image information (location, filename, alt, title) about pictures used to described a project. So, an "ImagesProjets" belongs to a "Projets".
When i create an ImagesProjets, i upload a file, get its clean filename (no accents, no double extension, this kind of stuff), and stores it on the filesystem, in a specific folder. I then store this clean filename in the "path" property of my "ImagesProjets".
When i want to create a ImagesProjets, i need to present a form with an upload field, and keep it populated if an error occurs (which is not the case for now).
When i want to modify a ImagesProjets, i'd like to see that the ImagesProjets already exists, that the associated path gets to a real file, and then show the path and the image upload (in case the user wants to modify the file).
Should i create an image object if a file exists, or something like that ? I think i'm not making it the good way for now; could someone help, please ?
TIA
My model
My controller
I have a structure problem : i have a model named "Projets", and another one named "ImagesProjets". The latter stores image information (location, filename, alt, title) about pictures used to described a project. So, an "ImagesProjets" belongs to a "Projets".
When i create an ImagesProjets, i upload a file, get its clean filename (no accents, no double extension, this kind of stuff), and stores it on the filesystem, in a specific folder. I then store this clean filename in the "path" property of my "ImagesProjets".
When i want to create a ImagesProjets, i need to present a form with an upload field, and keep it populated if an error occurs (which is not the case for now).
When i want to modify a ImagesProjets, i'd like to see that the ImagesProjets already exists, that the associated path gets to a real file, and then show the path and the image upload (in case the user wants to modify the file).
Should i create an image object if a file exists, or something like that ? I think i'm not making it the good way for now; could someone help, please ?
TIA
My model
class ImagesProjets extends CActiveRecord { public $image; ... public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('image', 'file', 'types'=>'jpg, gif, png'), array('path, alt, title, id_projet, default, created, modified', 'required'), array('id_projet, default', 'numerical', 'integerOnly' => true), array('path, alt, title', 'length', 'max' => 250), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('id, path, alt, title, id_projet, default, created, modified', 'safe', 'on' => 'search'), ); }
My controller
public function actionCreate() { $model = new ImagesProjets; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['ImagesProjets'])) { $model->image = CUploadedFile::getInstance($model, 'image'); if ($model->image) { $imageName = $model->image->getName(); $path = Utils::sanitize_filename($imageName); if ($model->image->saveAs(Yii::getPathOfAlias('webroot') . $this->folder . "/" . $path)) { $_POST['ImagesProjets']['path'] = $path; $_POST['ImagesProjets']['created'] = $_POST['ImagesProjets']['modified'] = date("Y-m-d H:i:s"); } } $model->attributes = $_POST['ImagesProjets']; if ($model->save()) { $this->redirect(array('view', 'id' => $model->id)); } } $this->render('create', array( 'model' => $model, )); }