Пытаюсь по мануалу сделать загрузку картинок. Не получается. Ошибка:
Контроллер
$model = new Photo('add');
$model->album_id = $this->album->id;
$model->user_id = Yii::app()->user->record->id;
$transaction = Photo::model()->dbConnection->beginTransaction();
if (isset($_POST[CHtml::modelName($model)])) {
$model->attributes = $_POST[CHtml::modelName($model)];
$model->image = CUploadedFile::getInstance($model, 'image');
//var_dump($model->image, $_FILES, $_POST);exit;
if ($model->validate()) {
$model->name = $model->image->name;
if ($model->save()) {
// photo's filename
$filename = Yii::app()->staticManager->generateFilename('photos', $model->id).'.'.Yii::app()->staticManager->normalizeExtension($model->image->name);
var_dump($filename);
// if ($model->attribute->saveAs($path)) {
// $transaction->commit();
// $this->refresh();
// }
$transaction->rollback();
}
}
}
Модель
class Photo extends CActiveRecord {
public $image;
/**
* @return string the associated database table name
*/
public function tableName() {
return '{{photos}}';
}
/**
* @return array validation rules for model attributes.
*/
public function rules() {
return array(
array('user_id, album_id', 'required'),
array('user_id, album_id', 'length', 'max' => 10),
array('name', 'length', 'max' => 255),
array('image, description', 'safe'),
array('image', 'file', 'types' => 'png,gif,jpeg,jpg', 'on' => 'add'),
// The following rule is used by search().
array('id, user_id, album_id, creation_time, description', 'safe', 'on' => 'search'),
);
}
Шаблон
<div class="text">
<?php $form = $this->beginWidget('CActiveForm') ?>
<?= $form->errorSummary($model, null, null, array('class' => 'danger_alert')) ?>
<?= $form->labelEx($model, 'image') ?>
<?= $form->fileField($model, 'image') ?><br />
<?= $form->labelEx($model, 'description') ?>
<?= $form->textField($model, 'description') ?><br />
<?= CHtml::submitButton(Yii::t('Photos.main', 'Upload photo')); ?>
<?php $this->endWidget(); ?>
</div>