yii2无限分类实例-非数据库递归
来源:互联网 发布:更换淘宝店铺负责人 编辑:程序博客网 时间:2024/06/07 03:49
基于yii2.0给大家做一个无限分类的实例,废话不多说:
1、设计数据表,很简单就三个字段
CREATE TABLE `category` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `cate_name` varchar(255) DEFAULT NULL, `pid` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、model层代码如下:
<?phpnamespace common\models;use Yii;use yii\helpers\ArrayHelper;/** * This is the model class for table "{{%category}}". * * @property string $id * @property string $cate_name * @property string $pid */class Category extends \yii\db\ActiveRecord{ /** * @inheritdoc */ public static function tableName() { return '{{%category}}'; } /** * @inheritdoc */ public function rules() { return [ [['pid'], 'integer'], [['cate_name'], 'string', 'max' => 255], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'cate_name' => '分类名称', 'pid' => '父级分类', ]; } /** * 获取所有的分类 */ public function getCategories() { $data = self::find()->all(); $data = ArrayHelper::toArray($data); return $data; } /** *遍历出各个子类 获得树状结构的数组 */ public static function getTree($data,$pid = 0,$lev = 1) { $tree = []; foreach($data as $value){ if($value['pid'] == $pid){ $value['cate_name'] = str_repeat('|___',$lev).$value['cate_name']; $tree[] = $value; $tree = array_merge($tree,self::getTree($data,$value['id'],$lev+1)); } } return $tree; } /** * 得到相应 id 对应的 分类名 数组 */ public function getOptions() { $data = $this->getCategories(); $tree = $this->getTree($data); $list = ['添加顶级分类']; foreach($tree as $value){ $list[$value['id']] = $value['cate_name']; } return $list; }}
3、控制器层声明这样一个方法
public function actionCreate() { $model = new Category(); $list = $model->getOptions(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', [ 'model' => $model, 'list' => $list ]); } }
4、视图层代码
<?phpuse yii\helpers\Html;use yii\widgets\ActiveForm;/* @var $this yii\web\View *//* @var $model common\models\Category *//* @var $form yii\widgets\ActiveForm */?><div class="category-form"> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'cate_name')->textInput(['maxlength' => true]) ?> <?= $form->field($model,'pid')->dropDownList($list)?> <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、效果图如下
0 0
- yii2无限分类实例-非数据库递归
- PHP无限分类(树形类),非数据库直接递归
- 无限级分类-非递归
- php+mysql无限级分类(非递归)
- php+mysql无限级分类(非递归)
- php+mysql无限级分类(非递归)
- php+mysql无限级分类(非递归)
- php 无限分类(非递归)
- (无限级、非递归)树形分类
- PHP+MySQL无限级分类(非递归)
- 无限级分类的非递归算法
- PHP非递归实现无限级分类
- PHP无限级分类实现(递归+非递归)
- PHP无限级分类实现(递归+非递归)
- PHP无限级分类实现(递归+非递归)
- PHP无限级分类实现(递归+非递归)
- PHP无限级分类实现(递归+非递归)
- php实现无限级分类查询(递归、非递归)
- halcon相关的链接
- Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算
- windows下使用curl控制台乱码问题
- java 多态(一)
- 归并排序
- yii2无限分类实例-非数据库递归
- Service Lifecycle
- IOS跳转到AppStore应用详情页面方法
- 设计模式--FlyWeight 模式
- 动态规划(划分成回文串,uva 11584)
- 安卓版本号
- Java学习:继承
- 动画基础
- 五、devtmpfs文件系统 创建设备节点