关于yii2:开源项目一个干净简约基于vue3yii2轻度改造的后台框架

Yaa 疾速助你CURD开发! 示例图 环境要求PHP >= 7.3Composer >= 2Node.js >= 14PHP 启用扩大fileinfoimagemagickexif链接https://yaa.speaks.life/admin账号:admin明码:123456Yaa文档地址github✨ 个性 界面清新、简洁⚒️ 原生框架轻度革新、不附带任何臃肿第三方库✨ 自带祝愿光环加持,助你效率晋升1000X 装置composer create-project umono/yaa-yii2 疾速上手出现数据表格(以用户表)为例: vue 文件<template> <TableData :subHeight="240" :search="search" ref="tables" @view="openModal({ id: $event.id, isEdit: false }, 'formModal')" @edit="openModal({ id: $event.id, isEdit: true }, 'formModal')" url="admin/api/user/index" :handle="_handleBtn"> <!-- 搜寻条件开始 --> <n-input v-model:value="search.nickName" filterable placeholder="用户昵称" /> <n-input v-model:value="search.name" filterable placeholder="姓名" /> <n-input v-model:value="search.phone" filterable placeholder="手机号码" /> <!-- 搜寻条件完结 --> </TableData></template><script lang="ts">import TableData from "@/components/common/TableData.vue";export default defineComponent({ name: "USER", components: { TableData }, setup() { // 搜寻条件参数 // 在开发中尽量应用search参数蕴含所有条件 let search = reactive({ name: '', } as any) return { search } },})</script>php 文件<?php namespace app\modules\backend\api\controllers; use app\modules\backend\api\Controller; use app\modules\backend\api\models\other\User; class UserController extends Controller { // 数据列表 public function actionIndex() { $get = $this->get; $andWhere = [ ['like', 'nickName', $get['nickName'] ?? ''], ['like', 'name', $get['name'] ?? ''], ['like', 'phone', $get['phone'] ?? ''], ]; return User::page()->andWhere($andWhere)->toTableDataArray(); } // 创立、批改、删除 // ... } 倡议如果您在应用的过程中碰到问题,能够先通过 issues 看看有没有相似的 bug 或者倡议。 ...

December 20, 2022 · 1 min · jiezi

关于yii2:Yii2-controller-传值给layout

在yii2中,咱们通过上面的办法,将controller的数组传递给view public function actionIndex() { $data = ['xx' => 'yy']; return $this->render($this->action->id,$data); }在view文件中就能够应用$xx变量了,这个变量的值是’yy’. 当初咱们想给layout外面传递,怎么办呢?上面是原理: 在yii/base/Controller.php中能够看到如下代码: public function render($view, $params = []) { $content = $this->getView()->render($view, $params, $this); return $this->renderContent($content); }查找renderContent()办法 public function renderContent($content) { $layoutFile = $this->findLayoutFile($this->getView()); if ($layoutFile !== false) { return $this->getView()->renderFile($layoutFile, ['content' => $content], $this); } return $content; }能够看到,咱们只有重写renderContent()办法,在这个办法的内容局部: [‘content’ => $content]在这个数组中,增加上咱们的想要的其余的数组,譬如: [‘content’ => $content, ‘tt’ => ‘terry’]咱们就能够在layout外面应用$tt变量了。也就是将controller中的变量传递给layout。 在fecify中就采纳了这个技术点,把 controller 传值给layout,解决了难题,心愿能够帮忙大家。

August 24, 2022 · 1 min · jiezi

关于yii2:Yii2-ElasticSearch-aggregate-group

我想要统计的是country_code 呈现的次数,通过yii2的ElasticSearch扩大,下面的例子满足我的须要。业务场景:在fecify商城中,应用elasticSearch搜寻,进行aggregate group操作,代码如下: public function actionCountry(){ $size = 5000; $name = 'country_code'; $type = 'terms'; $options = [ 'field' => 'country_code', 'size' => $size, ]; $data = WholeCountryData::find() //->limit(5000) //->offset(0) ->asArray() ->addAgg($name, $type, $options) ->createCommand() ->search(); $agg_data = $data['aggregations']; $buckets = $agg_data['country_code']['buckets']; //var_dump($agg_data);exit; $country_code_arr = \yii\helpers\BaseArrayHelper::getColumn($buckets,'key'); var_dump($country_code_arr);}

August 23, 2022 · 1 min · jiezi

关于yii2:yii2核心验证-时间验证

['expiration_range_0', 'date', 'timestampAttribute' => 'expiration_range_0', 'format' => 'php: Y-m-d', 'defaultTimeZone' => \Yii::$app->timeZone],['expiration_range_1', 'date', 'timestampAttribute' => 'expiration_range_1', 'format' => 'php: Y-m-d', 'defaultTimeZone' => \Yii::$app->timeZone],须要留神工夫格局,默认timestampAttribute 属性转化是UTC,无论是否在Yii->$app->timeZone,还是 Yii->$app->commoment->formatter设置defaultTimeZone、timeZine 都有效;必须在验证条目下来设置 还有就是转换工夫戳时的时区,否者有偏差;所以我的项目中必须查看时区;

April 26, 2022 · 1 min · jiezi

关于yii2:关于yii框架-updateAll-多次更新不生效

AdvModel::updateAll($row,['id'=>1]); //返回 1;AdvModel::updateAll($row,['id'=>1]); //返回 0; 换成上面的 $advModel->attributes = $row; $advModel->save();//true; $advModel->save();//true; 用save()代替

February 21, 2022 · 1 min · jiezi

关于yii2:Yii2框架基础模板使用多组用户增加admin

首先配置文件新增一组,copy user组件即可 属性可调整 'components' => [ //其余... 'user' => [ 'identityClass' => 'app\models\User', 'enableAutoLogin' => true, ], 'admin' => [ 'class' => 'yii\web\User', 'identityClass' => 'app\admin\models\Admin', 'enableAutoLogin' => true, 'loginUrl' => 'admin/default/xxx',//admin的登录页 'identityCookie' => ['name' => '_admin_identity', 'httpOnly' => true], //这5个我的项目必须配置 否则会和user登录状态发生冲突 'idParam' => '__admin_id', 'authKeyParam' => '__admin_authKey', 'authTimeoutParam' => '__admin_expire', 'absoluteAuthTimeoutParam' => '__admin_absoluteExpire', 'returnUrlParam' => '__admin_returnUrl', ],在控制器,假如咱们减少了一个admin模块 <?phpnamespace app\admin\controllers;use Yii;use yii\web\Controller;use yii\filters\AccessControl;class DefaultController extends Controller{ public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), /* * 这里的user必须要指定 components 里的后盾用户组组件名称admin * 否则默认会判断前台用户组user * 如果你取了其余名字就填写你自定义的名字 */ 'user' => 'admin', 'only' => ['index', 'signup'], 'rules' => [ [//不须要登录就能够拜访的办法 'allow' => true, 'actions' => ['login', 'signup'], 'roles' => ['?'], ], [//必须登录才能够拜访的办法 'allow' => true, 'actions' => ['index'], 'roles' => ['@'], ], ], ], ]; } public function actionIndex() { if( Yii::$app->admin->isGuest ){ return 'admin没有登陆,如果设置了AccessControl,其实压根拜访不到这里就会被重定向到管理员登陆界面'; } $identity = Yii::$app->admin->identity; return 'Your username : ' . $identity->username; } //admin登录 实在业务代码会简单一些 public function actionLogin() { $identity = \app\admin\models\Admin::findByUsername('demo'); return Yii::$app->admin->login($identity) ? 'admin登陆胜利' : '登陆失败' ; } //admin退出 public function actionLogout() { return Yii::$app->admin->logout() ? 'admin 登出胜利' : '登出失败' ; }}除了admin,你也能够设定其余用户组件,比方供应商,商户须要独立用户表都能够用这种办法 ...

November 11, 2021 · 1 min · jiezi

关于yii2:yii2问题

1.Yii2 验证码不显示} else { ob_clean(); //Add this line, can solve this problem. Or add in other suitable places $this->setHttpHeaders(); Yii::$app->response->format = Response::FORMAT_RAW; return $this->renderImage($this->getVerifyCode()); }

December 17, 2020 · 1 min · jiezi

关于yii2:yii2-读写分离模式下强制读主库

yii2 配置读写主动读写拆散时,在一些场景下可能须要强制读主库。以及 createCommand 的 in 查问参数绑定实现办法。 强制读主库yii2 配置读写主动主从拆散时,在一些场景下可能须要强制读主库。这时咱们能够应用 \yii\db\Connection 的 useMaster 办法来操作,该办法会将 enableSlaves 模式在本次查问会话中敞开,查问实现后继而复原。 /** @var $users User[] */$users = User::getDb()->useMaster(function($db) use ($ids) { /** @var $db \yii\db\Connection */ return $db->createCommand("SELECT * FROM " . User::tableName() . " where find_in_set(`id`, :ids) AND `is_del`=:is_del", [ ':ids' => implode(',', $ids), ':is_del' => Base::NOT_DELETED, ])->queryAll(\PDO::FETCH_OBJ);});createCommand IN 查问createCommand 构建 sql 时可能会遇到 IN 查问的场景,yii2 貌似不反对,能够应用 find_in_set 来代替。 $db->createCommand("SELECT * FROM `users` WHERE `id` in(:ids)", [':ids' => [1, 2, 3]]);$db->createCommand("SELECT * FROM `users` WHERE `id` in(:ids)", [':ids' => implode(",", [1, 2, 3])]);会被解析成 ...

November 27, 2020 · 1 min · jiezi