Quantcast
Channel: Yii Framework Forum
Viewing all articles
Browse latest Browse all 18717

Uploaded images management

$
0
0
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
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,
        ));
    }

Viewing all articles
Browse latest Browse all 18717

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>