JoenMarz
JoenMarz

Reputation: 143

Upload pictures from Yii showing endWiget() error

Hi I also had a problem when try to upload picture using this method.

My Action/model:

class Image extends CActiveRecord
{
    public $foto;
    ...

    public function rules()
    {
        return array(
            ...
            array('foto', 'file', 'types'=>'jpg, gif, png'),
            ...
        );
    }
}

My Controller:

class ImageController extends Controller
{
    public function actionCreate()
    {
            $model=new Image;

            // Uncomment the following line if AJAX validation is needed
            // $this->performAjaxValidation($model);

            if(isset($_POST['Image']))
            {
                    $model->attributes=$_POST['Image'];
                    $model->image=CUploadedFile::getInstance($model,'foto');
                    if($model->save())
                            $model->foto->saveAs('productimages');
                            $this->redirect(array('view','id'=>$model->id));
            }

            $this->render('create',array(
                    'model'=>$model,
            ));
    }
}

My view:

<?php $form = $this->beginWidget(
            'CActiveForm',
            array(
                'id' => 'upload-form',
                'enableAjaxValidation' => false,
                'htmlOptions' => array('enctype' => 'multipart/form-data'),
            )
    ); ?>

    <?php echo $form->labelEx($model, 'foto'); ?>
    <?php echo $form->fileField($model, 'foto'); ?>
    <?php echo $form->error($model, 'foto'); ?>

    ...

    <div class="row buttons">
            <?php echo CHtml::submitButton('Submit'); ?>
    </div>

    <?php $this->endWidget(); ?>

But when I run, two problems appeared:

Problem #1: endWiget() call [SOLVED by Ivan Misic]

ImageController contains improperly nested widget tags in its view "/var/www/html/onlineshop-nimalogos/protected/views/image/_form.php". A CActiveForm widget does not have an endWidget() call.

Problem#2: Since problem # 1 is solved, came with another problem, the image is not saving at my 'productimages' folder.

Please help me with the problem # 2. Many thanks..

Upvotes: 0

Views: 360

Answers (1)

Ivan Misic
Ivan Misic

Reputation: 194

You have somewhere opened redundant CActiveForm widget and you should look into views and partials.

Yii is generting three view files with gii, and these are:

create.php      update.php
    |               |
    |               |
    +-------+-------+
            |
            |
          _form.php

create and update views are rendering the same partial _form, so you should look in all three to find redundant beginWidget call.

The view you supported in your question should be _form.php partial view.

Upvotes: 2

Related Questions