如何解决如何在yii2 gii生成的crud中添加自定义新字段
我使用Gii的10个字段在YII2中制作了一个CRUD。在我的mysql表中有徽标列,因此Gii为其生成了文本字段。我使用以下代码将其转换为文件字段。
$form->field($model,'manufacturer_logo')->fileInput()
现在我不知道可以在哪里编写控制器端代码,以便可以像其他字段一样将徽标保存在文件夹和DB中。 Gii生成的控制器中没有保存代码。我尝试遵循this,但也没有成功。
在我的模型规则中,我为有效的图像文件写了以下行。
public function rules()
{
return [
[['manufacturer_description','manufacturer_status','manufacturer_logo'],'string'],[['manufacturer_name','required'],[['manufacturer_logo'],'file','skipOnEmpty' => true,'extensions' => 'png,jpg'],[['created_at','updated_at'],'safe'],[['manufacturer_name'],'string','max' => 255],];
}
现在,当我填写所有字段并浏览图像并按Submit时,还会出现错误“请上传文件”,here,您可以看到,因此我无法上传图像并将其名称保存在DB列与其他字段一样。
为了进一步执行RND,现在图像保存在文件夹中,而不是数据库中,在这里我更改了控制器代码。
public function actionCreate()
{
$model = new Manufacturers();
if ($model->load(Yii::$app->request->post())) {
//upload logo
$base_path = Yii::getAlias('@app');
//$model = new UploadForm();
$imageFile = UploadedFile::getInstance($model,'manufacturer_logo');
$logoName = "";
if (isset($imageFile->size)) {
$imageFile->saveAs($base_path . '/web/uploads/' . $imageFile->baseName . '.' . $imageFile->extension);
$logoName = $imageFile->baseName . '.' . $imageFile->extension;
}
if(trim($logoName)!='') {
$model->manufacturer_logo = trim($logoName);
}
$model->save(false);
return $this->redirect(['view','id' => $model->id]);
}
return $this->render('create',[
'model' => $model,]);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。