DophinPHP后台增删改查

有分类的情况下 

<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 盛康网络 [ http://www.sdfnwl.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\customer\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\customer\model\Advert as AdvertModel;
use app\customer\model\AdvertType as AdvertTypeModel;
use think\facade\Validate;

/**
 * 广告控制器
 * @package app\customer\admin
 */
class Advert extends Admin
{
    /**
     * 广告列表
     * @return mixed
     * @throws \think\Exception
     * @throws \think\exception\DbException
     */
    public function index()
    {
        // 查询
        $map = $this->getMap();
        // 排序
        $order = $this->getOrder('update_time desc');
        // 数据列表
        $data_list = AdvertModel::where($map)->order($order)->paginate();

        $btnType = [
            'class' => 'btn btn-info',
            'title' => '广告分类',
            'icon'  => 'fa fa-fw fa-sitemap',
            'href'  => url('advert_type/index')
        ];

        $list_type = AdvertTypeModel::where('status', 1)->column('id,name');
        array_unshift($list_type, '默认分类');

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setSearch(['title' => '标题']) // 设置搜索框
            ->addColumns([ // 批量添加数据列
                ['id', 'ID'],
                ['name', '标题', 'text.edit'],
                ['image', '图片', 'picture'],
                ['typeid', '分类', 'select', $list_type],
                ['ad_type', '类型', 'text', '', ['代码', '文字', '图片', 'flash']],
//                ['timeset', '时间限制', 'text', '', ['永不过期', '限时']],
                ['create_time', '创建时间', 'datetime'],
                ['update_time', '更新时间', 'datetime'],
                ['status', '状态', 'switch'],
                ['right_button', '操作', 'btn']
            ])
            ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮
            ->addTopButton('custom', $btnType) // 添加顶部按钮
            ->addRightButtons(['edit', 'delete' => ['data-tips' => '删除后无法恢复。']]) // 批量添加右侧按钮
            ->addOrder('id,name,typeid,timeset,ad_type,create_time,update_time')
            ->setRowList($data_list) // 设置表格数据
            ->addValidate('Advert', 'name')
            ->fetch(); // 渲染模板
    }

    /**
     * 新增
     * @return mixed
     * @throws \think\Exception
     */
    public function add()
    {
        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();

            // 验证
//            $result = $this->validate($data, 'Advert');
//            if (true !== $result) $this->error($result);
//            if ($data['ad_type'] != 0) {
//                $data['link'] == '' && $this->error('链接不能为空');
//                Validate::is($data['link'], 'url') === false && $this->error('链接不是有效的url地址'); // true
//            }

//            // 广告类型
//            switch ($data['ad_type']) {
//                case 0: // 代码
//                    $data['content'] = $data['code'];
//                    break;
//                case 1: // 文字
//                    $data['content'] = '<a href="'.$data['link'].'" target="_blank" style="';
//                    if ($data['size'] != '') {
//                        $data['content'] .= 'font-size:'.$data['size'].'px;';
//                    }
//                    if ($data['color'] != '') {
//                        $data['content'] .= 'color:'.$data['color'];
//                    }
//                    $data['content'] .= '">'.$data['title'].'</a>';
//                    break;
//                case 2: // 图片
//                    $data['content'] = '<a href="'.$data['link'].'" target="_blank"><img src="'.get_file_path($data['src']).'" style="';
//                    if ($data['width'] != '') {
//                        $data['content'] .= 'width:'.$data['width'].'px;';
//                    }
//                    if ($data['height'] != '') {
//                        $data['content'] .= 'height:'.$data['height'].'px;';
//                    }
//                    if ($data['alt'] != '') {
//                        $data['content'] .= '" alt="'.$data['alt'];
//                    }
//                    $data['content'] .= '" /></a>';
//                    break;
//                case 3: // flash
//                    $data['content'] = '';
//                    $data['content'] = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"';
//                    if ($data['width'] != '') {
//                        $data['content'] .= ' width="'.$data['width'].'"';
//                    }
//                    if ($data['height'] != '') {
//                        $data['content'] .= ' height="'.$data['height'].'"';
//                    }
//                    $data['content'] .= '><param name="quality" value="high" /><param name="movie" value="'.$data['link'].'" /><embed allowfullscreen="true"';
//                    if ($data['height'] != '') {
//                        $data['content'] .= ' height="'.$data['height'].'"';
//                    }
//                    $data['content'] .= ' pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="'.$data['link'].'" type="application/x-shockwave-flash"';
//                    if ($data['width'] != '') {
//                        $data['content'] .= ' width="'.$data['width'].'"';
//                    }
//                    $data['content'] .= '></embed></object>';
//                    break;
//            }

            if ($advert = AdvertModel::create($data)) {
                // 记录行为
                action_log('advert_add', 'customer_advert', $advert['id'], UID, $data['name']);
                $this->success('新增成功', 'index');
            } else {
                $this->error('新增失败');
            }
        }

        $list_type = AdvertTypeModel::where('status', 1)->column('id,name');
        array_unshift($list_type, '默认分类');

        // 显示添加页面
        return ZBuilder::make('form')
            ->setPageTips('如果出现无法添加的情况,可能由于浏览器将本页面当成了广告,请尝试关闭浏览器的广告过滤功能再试。', 'warning')

            ->addFormItems([
                ['select', 'typeid', '分类', '', $list_type, 0],
                ['text', 'name', '标题'],
                ['image', 'image', '图片'],
//                ['radio', 'status', '立即启用', '', ['否', '是'], 1]
            ])
            ->addUeditor('content', '内容')
            ->addFormItems([
                ['radio', 'status', '立即启用', '', ['否', '是'], 1]
            ])
//            ->setTrigger('timeset', '1', 'start_time')
            ->fetch();
    }

    /**
     * 编辑
     * @param null $id 广告id
     * @return mixed
     * @throws \think\Exception
     */
    public function edit($id = null)
    {
        if ($id === null) $this->error('缺少参数');

        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();

            /*// 验证
            $result = $this->validate($data, 'Advert');
            if (true !== $result) $this->error($result);*/

            if (AdvertModel::update($data)) {
                // 记录行为
                action_log('advert_edit', 'customer_advert', $id, UID, $data['name']);
                $this->success('编辑成功', 'index');
            } else {
                $this->error('编辑失败');
            }
        }

        $list_type = AdvertTypeModel::where('status', 1)->column('id,name');
        array_unshift($list_type, '默认分类');

        $info = AdvertModel::get($id);
//        $info['ad_type'] = ['代码', '文字', '图片', 'flash'][$info['ad_type']];

        // 显示编辑页面
        return ZBuilder::make('form')
            ->setPageTips('如果出现无法添加的情况,可能由于浏览器将本页面当成了广告,请尝试关闭浏览器的广告过滤功能再试。', 'warning')
            ->addFormItems([
                ['hidden', 'id'],
                ['hidden', 'tagname'],
                ['select', 'typeid', '分类', '', $list_type, 0],
                ['text', 'name', '标题'],
                ['image', 'image', '图片'],
            ])
            ->addUeditor('content', '内容')
            ->addFormItems([
                ['radio', 'status', '立即启用', '', ['否', '是']]
            ])
            ->setTrigger('timeset', '1', 'start_time')
            ->setFormData($info)
            ->fetch();
    }

    /**
     * 删除广告
     * @param array $record 行为日志
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function delete($record = [])
    {
        return $this->setStatus('delete');
    }

    /**
     * 启用广告
     * @param array $record 行为日志
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function enable($record = [])
    {
        return $this->setStatus('enable');
    }

    /**
     * 禁用广告
     * @param array $record 行为日志
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function disable($record = [])
    {
        return $this->setStatus('disable');
    }

    /**
     * 设置广告状态:删除、禁用、启用
     * @param string $type 类型:delete/enable/disable
     * @param array $record
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function setStatus($type = '', $record = [])
    {
        $ids         = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
        $advert_name = AdvertModel::where('id', 'in', $ids)->column('name');
        return parent::setStatus($type, ['advert_'.$type, 'customer_advert', 0, UID, implode('、', $advert_name)]);
    }

    /**
     * 快速编辑
     * @param array $record 行为日志
     * @return mixed
     */
    public function quickEdit($record = [])
    {
        $id      = input('post.pk', '');
        $field   = input('post.name', '');
        $value   = input('post.value', '');
        $advert  = AdvertModel::where('id', $id)->value($field);
        $details = '字段(' . $field . '),原值(' . $advert . '),新值:(' . $value . ')';
        return parent::quickEdit(['advert_edit', 'customer_advert', $id, UID, $details]);
    }
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DophinPHP(海豚PHP)是一个基于ThinkPHP5.0.3开发的开源PHP快速开发框架,秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种灵活快速构建工具,可方便快速扩展的模块、插件、钩子、数据包。统一了模块、插件、钩子、数据包之间的版本和依赖关系,进一步降低了代码和数据的沉余,以方便开发者快速构建自己的应用。 ZBuilder构建类 DolphinPHP内置了强大的快速构建器,可以帮助开发者快速构建表单页面、数据表格和侧栏,以便让开发者专注于业务逻辑,而不用把过多的精力放在制作各种页面上,今后DolphinPHP将推出更多不同的构建器。 【表单构建】 表单构建器目前内置了多达30几种表单项类型,比如:单行文本、多行文本、百度编辑器、markdown编辑器、单选、多选、开关、联动、取色器、图标选择器、图片裁剪等等,只需几行代码,即可实现复杂且人性化的功能。 【数据表格】 为了让开发者专注于业务本身,DolphinPHP提供了一系列针对构建数据表格的方法,可以帮助开发者快速构建数据表格,集成快速编辑、模糊搜索、字段排序、字段搜索。 【侧栏构建】 DolphinPHP为大家提供了侧栏构建器,方便开发者把一些常用的设置,提示等放置在右侧,增强用户体验。 注意:软件需在php5.5以上的环境中才能正常运行。 DolphinPHP快速开发框架 更新日志: v1.0.2 更新 修复:一处单词拼写错误 修复:检查新版本时,普通用户会报节点不存在的问题 (感谢网友:天天 的反馈) 修复:发送ajax时,有时候会报“未定义变量:_top_menus”或者“未定义变量:_location”的问题 修复:某些情况下,找不到模板的问题 修复:表格构建器中,如果数据没有主键时会报错的问题 修复:单文件上传、多文件上传、单图片上传、多图片上传在触发器中切换会报错的问题 改进:快速联动支持简单布局 改进:安装框架不再检查是否有mysql密码 改进:登录后台默认不启用验证码 改进:框架安装完毕,显示默认管理员账号和密码 改进:后台配置模型的getConfig方法不采用静态方式 改进:框架安装模块中,url使用兼容模式,以免未启用pathinfo时无法安装的问题 新增:支持在添加表单项时设置布局参数(表单布局) 新增:表单的addBtn方法支持重复调用(添加按钮) 新增:表单新增addButton方法,可以在表单内添加自定义按钮(按钮) 新增:数据授权页面,增加全选和反选功能 新增:表格每列增加一个class名,名称为“column-列名”,方便用css设置列样式(添加一列) 新增:在表格构建器中,可以使用“__字段名__”来获取原数据,要注意使用顺序 新增:cms模块的导航演示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值