日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

dscms源码分析笔记

發(fā)布時(shí)間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dscms源码分析笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

<?php namespace app\admin\controller; use think\Lang; class Admin extends AdminControl//繼承AdminControl控制器 {public function _initialize()//初始化{parent::_initialize();//執(zhí)行父類(lèi)方法//讀取語(yǔ)言配置: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');//實(shí)例化model類(lèi)(application文件夾下common文件夾下model文件夾下面)$condition = array();//條件變量$admin_list = $model_admin->getAdminList($condition, '*', 5);//執(zhí)行admin模型類(lèi)中g(shù)etAdminList方法 從而返回 $member_list->items()數(shù)據(jù)和page_info數(shù)據(jù)$this->assign('admin_list', $admin_list);$this->assign('show_page', $model_admin->page_info->render());//執(zhí)行基類(lèi)AdminControl中setAdminCurItem的方法 而該方法又調(diào)用了本文件下getAdminItemList方法$this->setAdminCurItem('index');//返回 $this->assign('admin_item', $this->getAdminItemList()); $this->assign('curitem', $curitem);//admin_list 返回給視圖頁(yè)面使用 {volist name="admin_list" id="admin"} {/volist}//$curitem//視圖頁(yè)面// 使用了模板繼承{extend name="layout:home" /}---中{$Think.BASE_SITE_ROOT}類(lèi)似的常量定義在application下的 應(yīng)用公共(函數(shù))文件common.php定義//{block name="container"}內(nèi)容{/block}//{include file="layout/admin_items" /} 中//admin_items.html文件中$admin_item來(lái)源于AdminControl控制器setAdminCurItem(當(dāng)前選中的欄目方法)//$item.name eq $curitem 做對(duì)比來(lái)實(shí)現(xiàn)是否高亮/* {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="刷新當(dāng)前頁(yè)面" class="iconfont icon-reload"></i></a></div></ul>{/if}*///視圖頁(yè)面中 類(lèi)似{$Think.lang.admin_name} 讀取語(yǔ)言變量值是在lang文件夾下面對(duì)應(yīng)的語(yǔ)言文件夾下的admin.lang.php中admin_name的值以此類(lèi)推//而里面類(lèi)似{$Think.lang.ds_no_login}卻沒(méi)有在前者存在的語(yǔ)言變量值,則是由基類(lèi)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');//判斷用戶(hù)名是否存在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());}//添加到數(shù)據(jù)庫(kù)$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過(guò)去主要讓驗(yàn)證器的unique自動(dòng)識(shí)別是否需要判斷唯一性'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());}//驗(yàn)證數(shù)據(jù) 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'));}}/*** 獲取欄目列表,針對(duì)控制器下的欄目*/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;} }

總結(jié)

以上是生活随笔為你收集整理的dscms源码分析笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。