Yii2.0 添加分类category model类
<?php namespace app\models; use yii\db\ActiveRecord;
use Yii;
use yii\helpers\ArrayHelper; class Category extends ActiveRecord
{
public static function tableName()
{
return "{{%category}}";
} public function attributeLabels()
{
return [
'parentid' => '上级分类',
'title' => '分类名称'
];
} public function rules()
{
return [
['parentid', 'required', 'message' => '上级分类不能为空'],
['title', 'required', 'message' => '标题名称不能为空'],
['createtime', 'safe']
];
} public function add($data)
{
$data['Category']['createtime'] = time();
if ($this->load($data) && $this->save()) {
return true;
}
return false;
} public function getData()
{
$cates = self::find()->all();
$cates = ArrayHelper::toArray($cates);
return $cates;
} public function getTree($cates, $pid = 0)
{
$tree = [];
foreach($cates as $cate) {
if ($cate['parentid'] == $pid) {
$tree[] = $cate;
$tree = array_merge($tree, $this->getTree($cates, $cate['cateid']));
}
}
return $tree;
} public function setPrefix($data, $p = "|-----")
{
$tree = [];
$num = 1;
$prefix = [0 => 1];
while($val = current($data)) {
$key = key($data);
if ($key > 0) {
if ($data[$key - 1]['parentid'] != $val['parentid']) {
$num ++;
}
}
if (array_key_exists($val['parentid'], $prefix)) {
$num = $prefix[$val['parentid']];
}
$val['title'] = str_repeat($p, $num).$val['title'];
$prefix[$val['parentid']] = $num;
$tree[] = $val;
next($data);
}
return $tree;
} public function getOptions()
{
$data = $this->getData();
$tree = $this->getTree($data);
$tree = $this->setPrefix($tree);
$options = ['添加顶级分类'];
foreach($tree as $cate) {
$options[$cate['cateid']] = $cate['title'];
}
return $options;
} public function getTreeList()
{
$data = $this->getData();
$tree = $this->getTree($data);
return $tree = $this->setPrefix($tree);
} public static function getMenu()
{
$top = self::find()->where('parentid = :pid', [":pid" => 0])->limit(11)->orderby('createtime asc')->asArray()->all();
$data = [];
foreach((array)$top as $k=>$cate) {
$cate['children'] = self::find()->where("parentid = :pid", [":pid" => $cate['cateid']])->limit(10)->asArray()->all();
$data[$k] = $cate;
}
return $data;
} }
Yii2.0 添加分类category model类的更多相关文章
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
一. 分类-Category 1. 基本用途:Category 分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...
- yii2.0 添加组件baidu ueditor
下载uditor git clone https://github.com/BigKuCha/yii2-ueditor-widget.git 将下载的项目放到 common/wdigets目录上 修改 ...
- 分类(Category)的本质 及其与类扩展(Extension) /继承(Inherit)的区别
1.分类的概念 分类是为了扩展系统类的方法而产生的一种方式,其作用就是在不修改原有类的基础上,为一个类扩展方法,最主要的是可以给系统类扩展我们自己定义的方法. 如何创建一个分类?↓↓ ()Cmd+N, ...
- yii2.0 图片上传(摘录)
文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izmn.html 下面小伙就带领大学学习一下 Yii2.0 的图片上传类的使用,还是老样子,如果代码样 ...
- OC中分类(Category)和扩展(Extension)
1.分类的定义 category是Objective-C 2.0之后添加的语言特性,中文也有人称之为分类.类别.Category的主要作用是为已经存在的类添加方法.这个大家可能用过很多,如自己给UIC ...
- iOS分类Category探索
什么是Category? Category是Objective-C 2.0之后添加的语言特性,Category的主要作用是为已经存在的类添加方法,一般称为分类,文件名格式是"NSObject ...
- iOS之分类(category)
1.分类(category)的作用 1.1作用:可以在不修改原来类的基础上,为一个类扩展方法.1.2最主要的用法:给系统自带的类扩展方法. 2.分类中能写点啥? 2.1分类中只能添加“方法”,不能增加 ...
- iOS中 分类(category)与扩展(Extension)的区别?
1.分类(category)的作用 (1).作用:可以在不修改原来类的基础上,为一个类扩展方法.(2).最主要的用法:给系统自带的类扩展方法. 2.分类中能写点啥? (1).分类中只能添加“方法”,不 ...
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
ADO.NET 一.ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二.ADO.NET的组成 ①System.Data → DataTable, ...
随机推荐
- 让linux下的eclipse支持GBK编码
原文链接:http://leaze.blog.51cto.com/83088/195584 今天,把windows下的工程导入到了Linux下eclipse中,由于以前的工程代码,都是GBK编码的,而 ...
- Java 图形界面开发--图文并茂建立学生管理系统
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...
- Objective-C 类型转换
类型转换通常是指变量,从一种类型转换成另外一种类型.例如将一个long类型转换成int类型,变量转换通常 用下面的方式: (type_name) expression 在Objective-C中,我们 ...
- 修改完linux bashrc文件之后,如何不重启系统使其生效
修改完后,输入如下命令即可 ##@##:~/ source ~/.bashrc 之后bashrc文件就可以使用! 注: 使用ssh登陆shell的时候,系统不会自动调用.bashrc文件, 只是 ...
- java httpclient 跳过证书验证
import java.io.IOException;import java.net.InetAddress;import java.net.Socket;import java.net.Unknow ...
- JAVA的程序基本结构和数据类型
//源程序 Hello.java public class Hello { static String str ="Hello World"; public static void ...
- 自己开发的在线视频下载工具,基于Java多线程
比如这个在线视频: 我们可以正常播放,但是找不到下载按钮. 打开Chrome开发者工具,在Network标签页里能看到很多网络传输请求: 随便看一个请求的响应,发现类型为video,大小为500多k. ...
- monkeyrunner之控件ID不存在或重复(转载lynnLi)
我们在用monkeyrunner进行Android自动化时,通过获取坐标点或控件ID进行一系列操作.由于使用坐标点时,屏幕分辨率一旦更改,则代码中用到坐标的地方都要修改,这样导致代码的复用率较低.因此 ...
- (2)JSTL的fmt国际化标签库
format标签库:做国际化格式化,分两类 : 国际化核心标签:<fmt:setLocale>.<fmt:bundle>.<fmt:setBundle>.<f ...
- shell脚本,创建50个文件,删除50个文件。
[root@localhost ~]# cat create50.sh #!/bin/bash #创建50个文件 ` do touch student$i done echo "创建50个文 ...