日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

dscms源码分析笔记

發布時間:2023/12/31 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dscms源码分析笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以后臺admin模塊下Admin控制器為例分析其走向流程,學習和借鑒其好的思路和思維邏輯(詳細分解防止以后忘記)。。。大佬不用看了,請勿噴!

<?php namespace app\admin\controller; use think\Lang; class Admin extends AdminControl//繼承AdminControl控制器 {public function _initialize()//初始化{parent::_initialize();//執行父類方法//讀取語言配置:config('default_lang') 讀取config配置文件中default_lang的值 APP_PATH則是入口文件index.php中定義的常量define('APP_PATH', __DIR__ . '/../application/');Lang::load(APP_PATH . 'admin/lang/' . config('default_lang') . '/admin.lang.php');//application文件夾下admin文件夾下lang文件夾下面}/*** 管理員列表* @return mixed*/public function index(){$model_admin = Model('admin');//實例化model類(application文件夾下common文件夾下model文件夾下面)$condition = array();//條件變量$admin_list = $model_admin->getAdminList($condition, '*', 5);//執行admin模型類中getAdminList方法 從而返回 $member_list->items()數據和page_info數據$this->assign('admin_list', $admin_list);$this->assign('show_page', $model_admin->page_info->render());//執行基類AdminControl中setAdminCurItem的方法 而該方法又調用了本文件下getAdminItemList方法$this->setAdminCurItem('index');//返回 $this->assign('admin_item', $this->getAdminItemList()); $this->assign('curitem', $curitem);//admin_list 返回給視圖頁面使用 {volist name="admin_list" id="admin"} {/volist}//$curitem//視圖頁面// 使用了模板繼承{extend name="layout:home" /}---中{$Think.BASE_SITE_ROOT}類似的常量定義在application下的 應用公共(函數)文件common.php定義//{block name="container"}內容{/block}//{include file="layout/admin_items" /} 中//admin_items.html文件中$admin_item來源于AdminControl控制器setAdminCurItem(當前選中的欄目方法)//$item.name eq $curitem 做對比來實現是否高亮/* {if $admin_item}<ul class="layui-tab-title">{foreach name="admin_item" item="item" }<li {if condition="$item.name eq $curitem" }class="layui-this" {/if}><a href="{$item.url}">{$item.text}</a></li>{/foreach}<div class="tool-btns"><a href="javascript:location.reload();" title="刷新當前頁面" class="iconfont icon-reload"></i></a></div></ul>{/if}*///視圖頁面中 類似{$Think.lang.admin_name} 讀取語言變量值是在lang文件夾下面對應的語言文件夾下的admin.lang.php中admin_name的值以此類推//而里面類似{$Think.lang.ds_no_login}卻沒有在前者存在的語言變量值,則是由基類AdminControl控制器中_initialize初始化方法中//Lang::load(APP_PATH . 'admin/lang/' . config('default_lang') . '.php');而引用的return $this->fetch();}/*** 添加管理員* @return mixed*/public function add(){if (request()->isPost()) {$model_admin = Model('admin');//判斷用戶名是否存在if ($model_admin->getOneAdmin(['admin_name' => input('post.admin_name')])) {$this->error(lang('admin_existence'));}$data = array('admin_name' => input('post.admin_name'),'admin_password' => input('post.admin_password'),'admin_group_id' => input('post.group_id'),'admin_add_time' => TIMESTAMP,);$admin_validate = validate('admin');if (!$admin_validate->scene('add')->check($data)){$this->error($admin_validate->getError());}//添加到數據庫$data['admin_password'] = md5(input('post.admin_password'));$result = $model_admin->addAdmin($data);if ($result) {dsLayerOpenSuccess(lang('admin_add_succ'));} else {$this->error(lang('admin_add_fail'));}} else {$admin_array = array('add' => 1);$admin_group = model('admingroup')->getAdminGroupList('group_name,group_id');$this->assign('admin_group', $admin_group);$this->assign('admin', $admin_array);return $this->fetch('form');}}/*** 編輯管理員* @return bool*/public function edit(){$admin_id = input('param.admin_id');if (empty($admin_id)) {$this->error(lang('param_error'));}$model_admin = Model('admin');if (!request()->isPost()) {$condition['admin_id'] = $admin_id;$admin_array = $model_admin->getOneAdmin($condition);$admin_array['add'] = 0;$admin_group = model('admingroup')->getAdminGroupList('group_name,group_id');$this->assign('admin_group', $admin_group);$this->assign('admin', $admin_array);return $this->fetch('form');} else {$data = array('admin_id' => $admin_id,//帶id過去主要讓驗證器的unique自動識別是否需要判斷唯一性'admin_name' => input('post.admin_name'),'admin_password' => input('post.admin_password'),'admin_group_id' => input('post.group_id'));$admin_validate = validate('admin');if (!$admin_validate->scene('edit')->check($data)){$this->error($admin_validate->getError());}//驗證數據 END$data['admin_password'] = md5(input('post.admin_password'));$result = $model_admin->editAdmin(array('admin_id' => intval($admin_id)), $data);if ($result) {dsLayerOpenSuccess(lang('admin_edit_succ'));} else {$this->error(lang('admin_edit_fail'));}}}/*** 刪除管理員*/public function del(){$admin_id = input('param.admin_id');if (empty($admin_id)) {$this->error(lang('param_error'));}$result = db('admin')->delete($admin_id);if ($result) {ds_json_encode(10000, lang('admin_del_succ'));} else {ds_json_encode(10001, lang('admin_del_fail'));}}/*** 獲取欄目列表,針對控制器下的欄目*/protected function getAdminItemList(){$menu_array = array(array('name' => 'index', 'text' => lang('ds_manage'), 'url' => url('Admin/index')), array('name' => 'add', 'text' => lang('ds_add'), 'url' => "javascript:dsLayerOpen('".url('Admin/add')."','".lang('ds_add')."')"),);return $menu_array;} }

總結

以上是生活随笔為你收集整理的dscms源码分析笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。