Yii2框架中如何动态增加对相同顶级域名跨域的支持?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 2 次浏览 • 3 小时前 • 来自相关话题

Yii2框架如何重写POST或者GET参数?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 192 次浏览 • 2019-01-11 16:08 • 来自相关话题

Yii2中“事务”中只有一张表数据更新成功了却没有回滚?什么原因造成的?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 434 次浏览 • 2018-09-19 16:12 • 来自相关话题

Yii2框架中如何安装指定版本的组件包?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 320 次浏览 • 2018-08-29 20:55 • 来自相关话题

Yii2框架中如何实现操作数据库某字段增加或减少一定数值?

zkbhj 发表了文章 • 0 个评论 • 704 次浏览 • 2018-05-17 17:41 • 来自相关话题

$user = UserList::find()->where(['id' => $id])->one();
$user->updateCounters(['login_counts'=>1]);
$user = UserList::find()->where(['id' => $id])->one();
$user->updateCounters(['login_counts'=>1]);

Yii2中如何对ActiveRecoder进行大小范围的操作?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 506 次浏览 • 2018-03-12 14:18 • 来自相关话题

Yii2框架如何实现邮件发送

zkbhj 发表了文章 • 0 个评论 • 312 次浏览 • 2017-12-21 19:11 • 来自相关话题

今天在一个项目开发中遇到了邮件发送的需求,现在记录下如何在yii2中实现邮件发送:
我们需要用到一个组件——swiftmailer。
 
首先,在main.php中增加配置:'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' =>false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.qq.com',
'username' => 'mymail',
'password' => 'mymail',
'port' => '456',
//'encryption' => 'ssl',
],
'messageConfig'=>[
'charset'=>'UTF-8',
'from'=>['mymail@qq.com'=>'zkbhj']
],
]然后,在程序中:$userList = ['zkbhj@qq.com'];
$mail = Yii::$app->mailer;
$mail->useFileTransport = false;
$mail->compose()->setFrom('zkbhj@qq.com')
->setTo($userList)
->setSubject('数据统计')
->setHtmlBody($txt)
->send(); 
如果执行时发生如下报错,可以注释掉'encryption' => 'ssl',试试。 
Error: Connection could not be established with host smtp.qq.com 查看全部
今天在一个项目开发中遇到了邮件发送的需求,现在记录下如何在yii2中实现邮件发送:
我们需要用到一个组件——swiftmailer。
 
首先,在main.php中增加配置:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' =>false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.qq.com',
'username' => 'mymail',
'password' => 'mymail',
'port' => '456',
//'encryption' => 'ssl',
],
'messageConfig'=>[
'charset'=>'UTF-8',
'from'=>['mymail@qq.com'=>'zkbhj']
],
]
然后,在程序中:
$userList = ['zkbhj@qq.com'];
$mail = Yii::$app->mailer;
$mail->useFileTransport = false;
$mail->compose()->setFrom('zkbhj@qq.com')
->setTo($userList)
->setSubject('数据统计')
->setHtmlBody($txt)
->send();
 
如果执行时发生如下报错,可以注释掉'encryption' => 'ssl',试试。 
Error: Connection could not be established with host smtp.qq.com

Yii2框架项目中实现excel的导入和导出

zkbhj 发表了文章 • 0 个评论 • 741 次浏览 • 2017-09-01 17:37 • 来自相关话题

导入导出Excel的需求场景
公司要做一个卡券系统的管理后台,经常会有大批量导入第三方卡券的需求,这时候,我们就需要后台系统支持excel文件的导入和导出功能,要实现这个功能,我们不能自己去从0研究Excel吧,即使可以,产品和项目进度也不允许呢,所以还是找轮子吧!我们都知道,yii2 框架有个composer组件功能,已经有很多大牛做了一些靠谱的组件给我们用了!
 
选择合适的组件
 
对比了官网和github上的一些composer组件,最终选择了老牌儿的PHPExcel,就是这个:phpoffice/phpexcel https://github.com/phpoffice/phpexcel
是的,有了这货,就可以帮我们完成了一切想要的功能了,它是一个很老牌很强大的Excel操作类,可以轻松生成一个电子表(csv、xls、xlsx),还能导入并分析电子表格,当然还有其他比如生成pdf等等。
 
如何使用?
 
首先要安装PHPExcel组件,方法非常简单,直接用包以来工具composer安装即可:composer require phpoffice/phpexcel安装成功后,程序vendor里应该多了一个phpoffice文件夹,就是它了。接下来,我们就可以使用了 ~





在包里配置上依赖关系





安装过程





安装成功后,vendor目录下发现了组件的身影~

PS:当然你要按照组件介绍中说明的系统环境安装使用,如下:





 
真正实现我们的需求:从excel表格导入数据





 
首先,准备好一个要导入的excel文档,文档内有6个要导入到库中的优惠券。
 
我们首先,要将excel中的优惠码数据,导入到一个数组变量中,然后再插入到数据库中。
 
接下来,我们写一个action来做这个事情:

 // 引入PHPExcel库
use PHPExcel;

public function actionImport(){
$file = Yii::getAlias("@webroot")."/import_test.xls";
$objReader = new \PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($file);

$objWorksheet = $objPHPExcel->getSheet(0);
//最大行数,为数字
$highestRow = $objWorksheet->getHighestRow();
//最大列数 为字母
$highestColumn = $objWorksheet->getHighestColumn();
//将字母变为数字
$highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn);

$tableData = [];
for($row = 1;$row<=$highestRow;$row++){
for($col=0;$col< $highestColumnIndex;$col++){
$tableData[$row][$col] = $objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
var_dump($tableData);
}最终,我们将得到如下结果:






ok!excel中的数据顺利来到了数组里,接下来的事情应该都会了,就不在这篇文章里赘述了!

真正实现我们的需求:从数据表中导出数据到excel文件
 
我们从库中读出几个优惠码,然后点击生成电子表格,直接浏览器下载,同样的,我们在一个action里来实现这个功能:
use PHPExcel;
$headerArr = ['优惠券编码'];

$fileName = "export_test.xls";
$objPHPExcel = new PHPExcel();
$objProps = $objPHPExcel->getProperties();

$hk = ord('A');
foreach($headerArr as $v){
$colum = chr($hk);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
$hk += 1;
}

$column = 2;
$data = ['adf5t56','5g6HTT4','9QWabh5','xcvTg7'];
$objActSheet = $objPHPExcel->getActiveSheet();
foreach($data as $key => $rows) //行写入
{
$span = 0;
foreach($rows as $keyName => $value) // 列写入
{
$j = \PHPExcel_Cell::stringFromColumnIndex($span);
$objActSheet->setCellValue($j.$column, $value);
$span++;
}
$column++;
}

$objPHPExcel->getActiveSheet()->setTitle('Export Test');
$objPHPExcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; filename=\"$fileName\"");
header('Cache-Control: max-age=0');

$writer = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
$writer->save('php://output');
bingo!一切顺利完成~ 查看全部
导入导出Excel的需求场景
公司要做一个卡券系统的管理后台,经常会有大批量导入第三方卡券的需求,这时候,我们就需要后台系统支持excel文件的导入和导出功能,要实现这个功能,我们不能自己去从0研究Excel吧,即使可以,产品和项目进度也不允许呢,所以还是找轮子吧!我们都知道,yii2 框架有个composer组件功能,已经有很多大牛做了一些靠谱的组件给我们用了!
 
选择合适的组件
 
对比了官网和github上的一些composer组件,最终选择了老牌儿的PHPExcel,就是这个:
phpoffice/phpexcel https://github.com/phpoffice/phpexcel

是的,有了这货,就可以帮我们完成了一切想要的功能了,它是一个很老牌很强大的Excel操作类,可以轻松生成一个电子表(csv、xls、xlsx),还能导入并分析电子表格,当然还有其他比如生成pdf等等。
 
如何使用?
 
首先要安装PHPExcel组件,方法非常简单,直接用包以来工具composer安装即可:
composer require phpoffice/phpexcel
安装成功后,程序vendor里应该多了一个phpoffice文件夹,就是它了。接下来,我们就可以使用了 ~

QQ截图20170901172949.png

在包里配置上依赖关系

QQ截图20170901173848.png

安装过程

QQ截图20170901173320.png

安装成功后,vendor目录下发现了组件的身影~

PS:当然你要按照组件介绍中说明的系统环境安装使用,如下:

QQ截图20170901172707.png

 
真正实现我们的需求:从excel表格导入数据

QQ截图20170901173638.png

 
首先,准备好一个要导入的excel文档,文档内有6个要导入到库中的优惠券。
 
我们首先,要将excel中的优惠码数据,导入到一个数组变量中,然后再插入到数据库中。
 
接下来,我们写一个action来做这个事情:

 
// 引入PHPExcel库
use PHPExcel;

public function actionImport(){
$file = Yii::getAlias("@webroot")."/import_test.xls";
$objReader = new \PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($file);

$objWorksheet = $objPHPExcel->getSheet(0);
//最大行数,为数字
$highestRow = $objWorksheet->getHighestRow();
//最大列数 为字母
$highestColumn = $objWorksheet->getHighestColumn();
//将字母变为数字
$highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn);

$tableData = [];
for($row = 1;$row<=$highestRow;$row++){
for($col=0;$col< $highestColumnIndex;$col++){
$tableData[$row][$col] = $objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
var_dump($tableData);
}
最终,我们将得到如下结果:

QQ截图20170901174923.png


ok!excel中的数据顺利来到了数组里,接下来的事情应该都会了,就不在这篇文章里赘述了!

真正实现我们的需求:从数据表中导出数据到excel文件
 
我们从库中读出几个优惠码,然后点击生成电子表格,直接浏览器下载,同样的,我们在一个action里来实现这个功能:
use PHPExcel;
$headerArr = ['优惠券编码'];

$fileName = "export_test.xls";
$objPHPExcel = new PHPExcel();
$objProps = $objPHPExcel->getProperties();

$hk = ord('A');
foreach($headerArr as $v){
$colum = chr($hk);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
$hk += 1;
}

$column = 2;
$data = ['adf5t56','5g6HTT4','9QWabh5','xcvTg7'];
$objActSheet = $objPHPExcel->getActiveSheet();
foreach($data as $key => $rows) //行写入
{
$span = 0;
foreach($rows as $keyName => $value) // 列写入
{
$j = \PHPExcel_Cell::stringFromColumnIndex($span);
$objActSheet->setCellValue($j.$column, $value);
$span++;
}
$column++;
}

$objPHPExcel->getActiveSheet()->setTitle('Export Test');
$objPHPExcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; filename=\"$fileName\"");
header('Cache-Control: max-age=0');

$writer = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
$writer->save('php://output');

bingo!一切顺利完成~

Yii2 使用数据库总结(一)

回复

zkbhj 发起了问题 • 1 人关注 • 0 个回复 • 590 次浏览 • 2017-08-24 12:13 • 来自相关话题

Yii2框架对入参进行验证的方法

zkbhj 发表了文章 • 0 个评论 • 379 次浏览 • 2017-08-08 20:22 • 来自相关话题

//获取验证参数
$model = \yii\base\DynamicModel::validateData([
'activity_code' => Yii::$app->getRequest()->post('activity_code'),
'uid' => Yii::$app->getRequest()->post('uid'),
'username' => Yii::$app->getRequest()->post('username'),
'phone' => Yii::$app->getRequest()->post('phone'),
'answer_1' => Yii::$app->getRequest()->post('answer_1'),
'answer_2' => Yii::$app->getRequest()->post('answer_2'),
'answer_3' => Yii::$app->getRequest()->post('answer_3')
], [
[['uid', 'activity_code', 'username', 'phone'], 'required'],
[['answer_1', 'answer_2', 'answer_3'], 'safe']
]);

if ($model->hasErrors()) {
FnModel::failureRespone('100001', $model->getErrors());
Yii::$app->end();
} 查看全部
//获取验证参数
$model = \yii\base\DynamicModel::validateData([
'activity_code' => Yii::$app->getRequest()->post('activity_code'),
'uid' => Yii::$app->getRequest()->post('uid'),
'username' => Yii::$app->getRequest()->post('username'),
'phone' => Yii::$app->getRequest()->post('phone'),
'answer_1' => Yii::$app->getRequest()->post('answer_1'),
'answer_2' => Yii::$app->getRequest()->post('answer_2'),
'answer_3' => Yii::$app->getRequest()->post('answer_3')
], [
[['uid', 'activity_code', 'username', 'phone'], 'required'],
[['answer_1', 'answer_2', 'answer_3'], 'safe']
]);

if ($model->hasErrors()) {
FnModel::failureRespone('100001', $model->getErrors());
Yii::$app->end();
}