YII2.0 中文件上传

本文介绍如何在Yii框架中实现公司Logo的上传功能,包括数据库字段的添加、模型类的修改、表单处理及控制器的调整等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在companies表里面添加一个名字为logo类型varchar(255)字段

 

2.修改models下的companies.php文件

class Companies extends \yii\db\ActiveRecord
{

   
 public $file;

 

     

/**
*
 @inheritdoc
*/

public function rules()
{
   
 return [
        [[
'company_name' , 'company_email', 'company_address', 'company_created_date' ,'company_created_date', 'company_status' ], 'required'],
        [[
'company_created_date' ], 'safe'],
        [[
'company_status' ], 'string'],
        [[
'file' ], 'file'],
        [[
'company_name' , 'logo', 'company_email', 'company_address' ], 'string', 'max' => 255]
    ];
}

 

/**
*
 @inheritdoc
*/

public function attributeLabels()
{
   
 return [
       
 'company_id' => 'Company ID',
       
 'company_name' => 'Company Name',
       
 'company_email' => 'Company Email',
       
 'company_address' => 'Company Address',
       
 'file' => 'Logo',
       
 'company_created_date' => 'Company Created Date',
       
 'company_status' => 'Company Status',
    ];
}

}

 

3.在web文件夹加下面新建一个名字是uploads的文件夹

 

 

4.修改_form.php

<?php

use yii\helpers \Html;
use yii\ widgets\ActiveForm;

/* @var $this yii\web\View */
/*
 @var $model backend\models\Companies */
/*
 @var $form yii\widgets\
ActiveForm */
?>

<div class= "companies-form">

   
 <?php $form = ActiveForm::begin (['options'=> ['enctype'=> 'multipart/form-data']]); ?>

     
#code ... 

    <?= $form ->field( $model, 'file' )->fileInput () ?>


    <?=
 $form ->field( $model, 'company_status' )->dropDownList ([ 'active' => 'Active' , 'inactive' => 'Inactive', ], ['prompt' => 'Status']) ?>

   
 < div class="form-group" >
       
 <?= Html ::submitButton( $model->isNewRecord ? 'Create' : 'Update', ['class' => $model-> isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]) ?>
   
 </ div>

   
 <?php ActiveForm::end (); ?>

</div>

 

5.修改控制器CompaniesController.php

/**
* Creates a new Companies model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/

public function actionCreate()
{
   
 if (Yii:: $app->user ->can( 'create-company')){
       
 $model = new Companies ();

       
 if ($model-> load(Yii ::$app-> request->post ()) ) {

           
 $imageName =$model-> company_name;
           
 // get the instance of  the uploaded file
           
 $model->file =UploadedFile:: getInstance($model ,'file');

           
 $model->file ->saveAs( 'uploads/'.$imageName .'.'. $model->file ->extension);

           
 // save the path in the db column
           
 $model->logo ='uploads/'. $imageName.'.' .$model-> file->extension ;

           
 $model ->company_start_date=date ('Y-m-d H:i:s');

           
 $model ->company_created_date=date ('Y-m-d H:i:s');

           
 $model ->save();

           
 return $this ->redirect([ 'view', 'id' => $model->company_id ]);
        }
 else {
           
 return $this ->render( 'create', [
               
 'model' => $model,
            ]);
        }
    }
else {
       
 throw new ForbiddenHttpException ;
    }

}

 

 

来自于datou:https://github.com/datou-leo/ci

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值