gii根据数据库表生成的model是扩展自\yii\db\ActiveRecord。
一个简单的功能:上传产品信息至数据库表中,同时上传产品图片至目录下。
用gii生成了CRUD,然后结合手册中上传文件的示例代码,在create view里添加一个file input ,为了能验证上传是jpg或是png,于是在model里添加了rule,然后添加自定义字段,数据库内容是进去了,图片没上传。
gii根据数据库表生成的model是扩展自\yii\db\ActiveRecord。而文件上传示例代码中用的自定义表单扩展自yii\base\Model;是不是这里的问题?
这么个简单的功能,这么难找到示例代码…
namespace backend\models;
use Yii;
use yii\web\UploadedFile;
class JiaoyanAward extends \yii\db\ActiveRecord
{
public $imageFile;//上传的图片
/**
* @inheritdoc
*/
public static function tableName()
{
return 'jiaoyan_award';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
// [['term', 'poster', 'class', 'award', 'organization', 'photo', 'self_value', 'check_value', 'check_time', 'status', 'remark'], 'required'],
[['term'], 'integer'],
[['self_value', 'check_value'], 'number'],
[['discount'], 'boolean'],
[['post_time', 'check_time'], 'safe'],
[['poster', 'class', 'organization'], 'string', 'max' => 50],
[['award', 'photo', 'remark'], 'string', 'max' => 100],
[['status'], 'string', 'max' => 10],
[['imageFile'], 'file', 'extensions' => 'png, jpg'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'term' => 'Term',
'poster' => 'Poster',
'class' => 'Class',
'award' => 'Award',
'organization' => 'Organization',
'photo' => 'Photo',
'self_value' => 'Self Value',
'discount' => 'Discount',
'check_value' => 'Check Value',
'post_time' => 'Post Time',
'check_time' => 'Check Time',
'status' => 'Status',
'remark' => 'Remark',
];
}
public function upload()
{
if ($this->validate()) {
$this->imageFile->saveAs('uploads/' . 'abc'. '.' . $this->imageFile->extension);
return true;
} else {
return false;
}
}
}
最好不要改源文件 写个类来继承 修改子类