功能描述,如下图:
把某个模块的list页面上方的导航栏重写!
方法如下:
1:在模块对应的Controller里的actionList里
$mixedView = $this->makeActionBarSearchAndListView($searchForm,$dataProvider,'SecuredActionBarForXXXsSearchAndListView');
$view = new XXXsPageView(ZurmoDefaultViewUtil::
makeStandardViewForCurrentUser($this, $mixedView));
SecuredActionBarForXXXsSearchAndListView 这个参数原来是默认没有的,没这个参数的话得到的SecuredActionBar 是4个按钮的。加了这个参数目的是重写这个页面。
2:在模块的views目录下新建一个叫SecuredActionBarForXXXsSearchAndListView.php的文件,在这里重写方法:
3:具体参考accounts模块的SecuredActionBarForAccountsSearchAndListView.php文件,部分代码如下:
public static function getDefaultMetadata()
{
$metadata = array(
'global' => array(
'toolbar' => array(
'elements' => array(
// array(
// 'type' => 'ListViewMergeMenu',
// 'iconClass' => 'icon-merge',
// 'listViewGridId' => 'eval:$this->listViewGridId',
// 'pageVarName' => 'eval:$this->pageVarName'
// )
),
),
),
);
return CMap::mergeArray(parent::getDefaultMetadata(), $metadata);
}
看到代码
return CMap::mergeArray(parent::getDefaultMetadata(), $metadata);
parent::getDefaultMetadata() 就是原理默认的4个按钮的代码,要重写的话,就把这个方法的代码重新写过,到时候这里换成
return CMap::mergeArray(重写后的方法调用, $metadata);
再调用就行了。
4:上述描述的减少按钮的,要增加按钮的话,在getDefaultMetadata()的elements多加几个就行了。
5:parent::getDefaultMetadata() 的代码在 ActionBarForSearchAndListView.php 里。
具体的代码就自己去看吧。如有不对,请指正!