1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 关于禅道二次开发的分享

关于禅道二次开发的分享

时间:2019-05-18 06:02:49

相关推荐

关于禅道二次开发的分享

关于禅道二次开发的分享

作者:轻易科技知行研发部 - 王想

为适应公司内部使用禅道平台,我参与的团队在现有版本上进行了二次开发。

首先,感谢开发禅道平台的原创团队。

因公司需要,本人学习了禅道的框架及使用,有了一些自己的感受,希望这篇博客,对大家以后开发禅道有所帮助。:)

一、学习禅道-个人看法

好的地方

1.1. 取消了命名空间,使用传统的自动加载

1.2.跨模块调用$this->loadModel($moduleName)、$this->app->loadClass('pager')、$this->app->loadLang($moduleName);

1.3.大量内部类 stdClass() 的使用

1.4.前端类(可以直接使用禅道内部封装好的类,特别方便)

1.5.方便的从数据库获取数据。比如:$this->app->user->realname 获取 zt_user 表的realname字段不好的地方

2.1.大量的配置文件和全局变量

2.2.部分变量的声明不明确

2.3.跨模块调用虽然减少了代码的冗余,将各模块关联起来,但是当开发的时候,大量的加载其它模块使代码看起来很混乱(真的有点头疼)

二、学习禅道-重要模块

mon 模块

此 模块下zh_cn.php文件可以配置所有的菜单(顶级菜单、模块菜单)。在menuOrder.php 文件中进行菜单的位置布置。

例如:

新增主菜单:$lang->menu->procedure = '流程|procedure|index';`添加副菜单: `$lang->procedure = new stdClass();`$lang->procedure->menu = new stdClass();$lang->procedure->menu->list = array('link' => '%s', 'fixed' => true);$lang->procedure->menu->story = array('link' => '需求|procedure|story|productID=%s', 'subModule' => 'story');

2.group模块(权限问题)

2.1.问题描述:

新建的菜单和功能模块,只在admin下可见,当其他普通用户登录时均不可见。

2.2.解决方案:

所有的模块、方法和菜单,都需要在该模块下进行配置

解决1:禅道页面组织菜单进行权限操作,并设置可见,退出当前账号重进,未解决

解决2:

/html/11/n-3576111.html

具体操作及注意事项:

例如:在group/lang/resource.php文件中(index、hello均为teprocess 模块下新建的方法,因此需要在group模块下分配权限)

> $lang->resource->teprocess = new stdClass(); > $lang->resource->teprocess->index = 'index'; > $lang->resource->teprocess->hello = 'hello'; > $lang->teprocess->methodOrder[5] = 'index'; > $lang->teprocess->methodOrder[10] = 'hello';

说明: 在这里配置之后, admin用户可对 teprocess 的 index、hello 方法设置访问权限,其它方法不能设置访问权限;

注意:配置完成后,在权限配置页不会显示相应方法的名字等信息会显示 [] ,因此还需要在相应模块下的lang/zh-cn.php 下对所有方法配置语言包。

> $lang->teprocess->index = 'teprocess首页';> $lang->teprocess->hello = '欢迎页';

3.block模块

3.1block模块的使用:

①首先,在需要使用block的view页面 添加一下代码 :

<?php echo $this->fetch('block', 'dashboard', 'module=teprocess')?>

②区块数据的获取,在block/control.php 中添加:

public function printUserBlock(){$this->session->set('userList', $this->server->http_referer);$this->view->users = $this->loadModel('teprocess')->getAllUser();}

③在block/lang/zh-cn.php文件里,配置当前页面可以创建的区块:

$lang->block->modules['teprocess'] = new stdClass();$lang->block->modules['teprocess']->availableBlocks = new stdClass();$lang->block->modules['teprocess']->availableBlocks->user = '用户列表';

三、学习禅道-重要的便利方法及常用第三方插件

1.setMenu($values,$key);// 设置菜单栏的 url

主要是对在common/zh_cn.php文件配置的菜单导航 %s 进行替换,生成正确的 url,此方法可以在任意模块使用,无需进行大的改动。

2.ajaxGetDropMenu($id, $module, $method, $extra);// 设置生成下拉菜单

在view层创建 ajaxgetdropmenu.html.php

可以在任意需要的模块使用该方法, 只需要修改小部分代码

3.富文本框的使用:

①view层:textarea($id, $value, $attrib);

例如:<?php echo html::textarea('desc', '', "rows='6' class='form-control'")?>

②框架提供富文本的使用只有 simpleTools、bugTools、fullTools 基本的功能选择,没有对富文本的大小的调节和读写模式的控制,这三种不同的选择,主要是针对富文本框最上面的工具栏功能的多少来自由定义。

例如:在相应模块的 config.php 添加:

$config->procedure->editor->requirementreview = array('id'=>'desc', 'tools'=>'simpleTools');

4.tablesorter插件

①在首页引入tablesorter.html.php文件,并在table标签和th标签中,加入特定的类名,即可完成排序的功能。

②加入特定的类名,即可完成正序、倒序功能。

5.分页

①在model中调用pager对象

②在control中将page对象赋值给模板

③view层,index.html.php中显示分页,调用框架自带的show()方法,其中show()方法有两个参数,$align: left, center, right,默认是居右对齐。$type: full|short|shortest,默认是full,可以省略不写。

四、遇到的坑

一定要注意框架的命名规则,主要指大小写的问题,比如,view层的命名只能是小写字母,小写字母,小写字母,重要的事情说三遍!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。