实习小结十三:基于PHP ZF框架的文章管理模块

这是我最近两三周做的一个Post模块,从数据库到后台,前台,数据库设计和总体设计都已经给我了,我也参考了不少已有模块的代码。刚开始7天,我用来实现post模块的增删改查的基本功能,之后的时间,就是修改一些逻辑代码,以及增添新功能,就像小结12里面写的ajax功能之类的。
先给出这个module的整个代码框架吧:
这里写图片描述

列出来的代码文件就是我所用到的代码,其中有些abstract为空,因为直接继承了其他的类。

Controller里面就是主要的action,在设置了路由文件之后,在controller里面写出相应的action,在action中完成对前台的传参,设置相应的template等。

Form里面就是在需要输入数据,添加数据时,所用的表格,里面有详细的label参数,下图就是基于PostAddForm的。
这里写图片描述

Model就是数据库中对应的参数,在这边定义清楚。

Table是对数据库进行操作的各种方法,这边参考了不少Zend Framework官网给出的Db方法,不是很难。在action里面通过getTable调用这些方法。

接下来就是相应的页面文件了。post文件夹中是大体的页面框架文件,具体的小文件部分在ctrl中,基本可以传个partial到post大页面中去。

这边我把controller里面,两个稍微重要的方法贴出来。贴多了,以后自己看,估计也不知所云。

public function PostAction(){
        if(!$this->userHasPermission('ADMIN', 'VIEW_PRODUCT'))
        {
            return $this->requirePermission('ADMIN', 'VIEW_PRODUCT');
        }

        $page = $this->getRequest()->getQuery('page', 1);
        $condition = array();
        $type_name = 'post';

        if(isset($_GET['post_status']) && $_GET['post_status'] != 'null') {
            $status = $_GET['post_status'];
            $condition['post_status'] = (int)$_GET['post_status'];
        }else{
            $condition['post_status'] = null;
        }

        if(isset($_GET['query'])) {
            $condition['title'] = $_GET['query'];
        }
        else{
            $condition['title'] = null;
        }

        if(isset($_GET['category'])) {
            $condition['category'] = $_GET['category'];
        }
        else{
            $condition['category'] = null;
        }

        if(isset($_GET['author'])) {
            $condition['author'] = $_GET['author'];
        }
        else{
            $condition['author'] = null;
        }

        $posts = $this->getPostTable()->getPaginator($condition);
        $posts->setItemCountPerPage(10);
        $posts->setCurrentPageNumber($page);

        $vm = new ViewModel(array(
            'post_paginator' => $posts,
        ));
        $vm->setTemplate('post/post-index');

        $this->layout()->selectedTab = 'post-list';
        return $vm;
    }

    public function addPostAction(){
        if(!$this->userHasPermission('ADMIN', 'VIEW_PRODUCT'))
        {
            return $this->requirePermission('ADMIN', 'VIEW_PRODUCT');
        }
        $user_service = $this->getServiceLocator()->get('UserService');

        $table = $this->getPostTable();
        $config = $this->getServiceLocator()->get('config');

        $sm = $this->getServiceLocator();

        $request = $this->getRequest();

        $form = new \Post\Form\PostAddForm(array(
            'adapter' => $sm->get('Zend\Db\Adapter\Adapter'),
            'user_service' => $user_service,
        ));

        $author_valid = true;

        if($request->isPost())
        {
            $form->setData($request->getPost());

            if ($form->isValid()) {
                $post_array = array();
                $post = new Post($this->getRequest()->getPost()->toArray());

                $user = $this->getServiceLocator()->get('UserService')->getUserById($post->author_id);
                if ($user) {
                   $author = $user->username;
                }
                else
                    $author = null;

                foreach ($post as $key => $value) {
                    if ($key == 'post_featured_img') {
                        $json_arr = json_decode($value,true);
                        $value = '/img'. '/' . substr($json_arr['name'],0,6) . '/' . $json_arr['name'] . '.' . $json_arr['type'];
                    }
                   $post_array[$key] = $value;
                }

                $post_array['author'] = $author;
                if (is_null($post_array['author'])) {
                    $author_valid = false;
                }else{
                    $postId = $table->addPost($post_array);
                    $this->redirect()->toUrl("/post");
                }
            } 
        } 

在代码中可以看出,关于图片是使用Json数组返回的,这是代码库里原来就封装好的Image Element的返回值,感觉很方便。

估计接下来,还得继续改改这个模块,刚开始做的时候,财哥跟我讲这个,我觉得很抽象,根本想象不出来这个怎么做,现在做出来,功能也都实现了,感觉蛮有成就感的,在博客里面算是纪念一下,这两周来,这个module给我带来的好坏心情吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您提供的信息,我可以为您绘制教育科研综合管理系统的业务流程图。以下是业务流程图的概览: ![教育科研综合管理系统的业务流程图](https://i.imgur.com/zF5V0zT.png) 下面是各个模块的详细业务流程图: ### 教研模块 #### 教案管理模块 ![教案管理模块的业务流程图](https://i.imgur.com/6xAHqGh.png) 1. 教师创建教案 2. 教师提交教案审核 3. 教务处审核教案 4. 审核通过,教案发布 5. 审核未通过,教师修改教案后重新提交审核 #### 课程管理模块 ![课程管理模块的业务流程图](https://i.imgur.com/1lQy5W1.png) 1. 教务处创建课程 2. 教师选择课程并创建课程表 3. 教师提交课程表审核 4. 教务处审核课程表 5. 审核通过,课程表发布 6. 审核未通过,教师修改课程表后重新提交审核 #### 教材管理模块 ![教材管理模块的业务流程图](https://i.imgur.com/3wJX6IJ.png) 1. 教务处创建教材 2. 教师选择教材并创建教材使用计划 3. 教师提交教材使用计划审核 4. 教务处审核教材使用计划 5. 审核通过,教材使用计划发布 6. 审核未通过,教师修改教材使用计划后重新提交审核 #### 听课模块 ![听课模块的业务流程图](https://i.imgur.com/4dSG9yN.png) 1. 教师申请听课 2. 教务处分配听课任务 3. 听课人员完成听课并填写听课报告 4. 听课报告发送至教务处 5. 教务处审核听课报告 6. 审核通过,听课任务完成 7. 审核未通过,听课人员重新听课 ### 科研模块 #### 成果管理模块 ![成果管理模块的业务流程图](https://i.imgur.com/LIqRn5k.png) 1. 教师提交成果申请 2. 科研处审核成果申请 3. 审核通过,成果发布 4. 审核未通过,教师修改成果后重新提交审核 #### 科研管理模块 ![科研管理模块的业务流程图](https://i.imgur.com/pQZ0jKd.png) 1. 教师提交科研项目申请 2. 科研处审核科研项目申请 3. 审核通过,科研项目启动 4. 审核未通过,教师修改科研项目申请后重新提交审核 希望这些业务流程图对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值