摘要:新建時(shí)創(chuàng)建默認(rèn)數(shù)據(jù)將基本字段添加到你的類在本節(jié)中,介紹如何向最近創(chuàng)建的類添加類型為,或的新的基本字段,在這個(gè)例子中,我們將向類添加一個(gè)新的字段首先要做的是定義類中的新字段。
新手入門(mén)指南-創(chuàng)建模塊
Customizing Zurmo ---- 自定義Zurmo
官方的動(dòng)物園為例:鏈接:http://zurmo.org/wiki/customi...
新建模塊
所有擴(kuò)展類將在自己的模塊中定義;在這個(gè)例子中,模塊將被稱為animals。文件目錄結(jié)構(gòu)如下:
在modules的文件夾下新建一個(gè)名為 animals 的新文件夾。
PS:名字單復(fù)數(shù)沒(méi)關(guān)系,但是 Zurmo 自帶的模塊都是采用復(fù)數(shù)形式,所以最好統(tǒng)一。
模塊將會(huì)有以下文件:
PS:這是官方給出的模塊的基本文件結(jié)構(gòu),但是根據(jù)我自己的經(jīng)驗(yàn),作為一個(gè)最簡(jiǎn)單的模塊的話,不需要這么多文件,具體的文件目錄,請(qǐng)參看CSDN博客:http://blog.csdn.net/tyrannoaurus/article/details/73850397。
下面的表格是關(guān)于每個(gè)文件的作用的:
為了在Zurmo應(yīng)用程序中集成和安裝該模塊,需要?jiǎng)?chuàng)建其他兩個(gè)文件
perInstanceConfig.php:ZurmoZoo 項(xiàng)目的自定義配置。在 protected/config/ 下新建
array( "animals", ), ); //引用文件,所以文件夾的名字一定要對(duì)應(yīng)上 $instanceConfig["components"]["custom"]["class"] = "application.extensions.zurmozoo.components.ZurmoZooCustomManagement"; $instanceConfig["import"][] = "application.extensions.zurmozoo.*"; $instanceConfig["import"][] = "application.extensions.zurmozoo.components.*"; $instanceConfig["import"][] = "application.extensions.zurmozoo.utils.*"; ?>
還有兩個(gè)文件,在 extensions/ 下新建 zurmozoo.components.ZurmoZooCustomManagement 和 zurmozoo.utils.ZurmoZooInstallUtil
ZurmoZoo 項(xiàng)目的具體定制管理 ZurmoZooCustomManagement.php 照寫(xiě)就行了
/** * Specific custom management for the zurmo zoo project. */ class ZurmoZooCustomManagement extends CustomManagement { /** * (non-PHPdoc) * @see CustomManagement::runBeforeInstallationAutoBuildDatabase() */ public function runBeforeInstallationAutoBuildDatabase(MessageLogger $messageLogger) { ZurmoZooInstallUtil::resolveCustomMetadataAndLoad(); } /** * (non-PHPdoc) * @see CustomManagement::resolveIsCustomDataLoaded() */ public function resolveIsCustomDataLoaded() { ZurmoZooInstallUtil::resolveCustomMetadataAndLoad(); } }
ZurmoZooInstallUtil: Helper class for Zurmo Zoo customizations.
class ZurmoZooInstallUtil { public static function resolveCustomMetadataAndLoad() { $shouldSaveZurmoModuleMetadata = false; $metadata = ZurmoModule::getMetadata(); if(!in_array("animals", $metadata["global"]["tabMenuItemsModuleOrdering"])) { //加入到側(cè)邊欄的配置中 $metadata["global"]["tabMenuItemsModuleOrdering"][] = "animals"; $shouldSaveZurmoModuleMetadata = true; } if($shouldSaveZurmoModuleMetadata) { ZurmoModule::setMetadata($metadata); GeneralCache::forgetAll(); } //------------------------------------------------------------------- //這段代碼為官方的例子,作用是和 Activity 關(guān)聯(lián)起來(lái),但是如果我們的應(yīng)用中不需要用到 Activity 的話,是不用引用這個(gè)代碼的,引用了這個(gè)代碼之后,在數(shù)據(jù)庫(kù)中會(huì)有記錄,可能以后的一些操作會(huì)報(bào)錯(cuò)也不一定。 $metadata = Activity::getMetadata(); if(!in_array("Animal", $metadata["Activity"]["activityItemsModelClassNames"])) { $metadata["Activity"]["activityItemsModelClassNames"][] = "Animal"; Activity::setMetadata($metadata); GeneralCache::forgetAll(); } //------------------------------------------------------------------- //新建時(shí)創(chuàng)建默認(rèn)數(shù)據(jù) Yii::import("application.extensions.zurmoinc.framework.data.*"); Yii::import("application.modules.animals.data.*"); $defaultDataMaker = new AnimalsDefaultDataMaker(); $defaultDataMaker->make(); } }
將基本字段添加到你的類
在本節(jié)中,介紹如何向最近創(chuàng)建的類添加類型為integer,float或string的新的基本字段,在這個(gè)例子中,我們將向Animal類添加一個(gè)新的字段 --description
首先要做的是定義類中的新字段。打開(kāi)文件
protected-> modules-> animals-> models-> Animal.php
并添加字段描述的定義如下。
array( "name", "description", ), //類的普通字段 "relations" => array( "type" => array(RedBeanModel::HAS_ONE, "OwnedCustomField", RedBeanModel::OWNED), ), //和 OwnedCustomField 表的關(guān)系 type "rules" => array( array("name", "required"), array("name", "type", "type" => "string"), array("name", "length", "max" => 100), array("description", "type", "type" => "string"), ), //字段的規(guī)則,包括在頁(yè)面的規(guī)則 和存入數(shù)據(jù)庫(kù)的時(shí)候,會(huì)轉(zhuǎn)化為字段的類型 "elements" => array( "description" => "TextArea", ), //字段的html類型, "customFields" => array( "type" => "AnimalType", ), //和relations 相對(duì)應(yīng)的屬性 , 會(huì)存入數(shù)據(jù)庫(kù)中, "defaultSortAttribute" => "name", //list頁(yè)面數(shù)據(jù)的默認(rèn)排序方式 "noAudit" => array( "description" ), //noAudit 表示這個(gè)字段的操作不會(huì)被記錄到操作記錄中 ); return $metadata; } ….. ?>
現(xiàn)在我們需要將該字段放在頁(yè)面中。打開(kāi)文件
protected-> modules-> animals-> views-> AnimalEditAndDetailsView.php
并定位新創(chuàng)建的字段,如下所示。只是部分代碼
class AnimalEditAndDetailsView extends SecuredEditAndDetailsView { public static function getDefaultMetadata() { $metadata = array( "global" => array( "toolbar" => array( "elements" => array( array("type" => "CancelLink", "renderType" => "Edit"), array("type" => "SaveButton", "renderType" => "Edit"), array("type" => "ListLink", "renderType" => "Details", "label" => "eval:Yii::t("Default", "Return to List")" ), array("type" => "EditLink", "renderType" => "Details"), array("type" => "AuditEventsModalListLink", "renderType" => "Details"), ), ), "derivedAttributeTypes" => array( "DateTimeCreatedUser", "DateTimeModifiedUser", ), "panelsDisplayType" => FormLayout::PANELS_DISPLAY_TYPE_ALL, "panels" => array( array( "rows" => array( array("cells" => array( array( "elements" => array( array("attributeName" => "name", "type" => "Text"), ), ), array( "elements" => array( array("attributeName" => "type", "type" => "DropDown", "addBlank" => true), ), ), ) ), array("cells" => array( array( "detailViewOnly" => false, "elements" => array( array("attributeName" => "integer", "type" => "Integer"), ), ), array( "detailViewOnly" => false, "elements" => array( array("attributeName" => "text", "type" => "Text"), ), ), ) ), array("cells" => array( array( "detailViewOnly" => false, "elements" => array( array("attributeName" => "radioPickList", "type" => "RadioDropDown", "addBlank" => true), ), ), array( "detailViewOnly" => false, "elements" => array( array("attributeName" => "pickList", "type" => "DropDown", "addBlank" => true), ), ), ) ), array("cells" => array( array( "detailViewOnly" => true, "elements" => array( array("attributeName" => "null", "type" => "DateTimeCreatedUser"), ), ), array( "detailViewOnly" => true, "elements" => array( array("attributeName" => "null", "type" => "DateTimeModifiedUser"), ), ), ) ), ), ), ), ), ); return $metadata; } protected function getNewModelTitleLabel() { return Yii::t("Default", "Create AnimalsModuleSingularLabel", LabelUtil::getTranslationParamsForAllModules()); } } ?>
如您所見(jiàn),我們添加了該字段的位置
array("cells" => array( array( "elements" => array( array("attributeName" => "description", "type" => "TextArea"), ), ), ) ),
而且還有以下鏈接:
array("type" => "AnimalDeleteLink", "renderType" => "Details"),
這個(gè)不是一定要的,但是如果需要,您可以在 details 頁(yè)面刪除動(dòng)物。為了實(shí)現(xiàn)這個(gè)功能,必須在
protected-> modules-> animals-> elements->
操作下添加 AnimalDeleteLinkActionElement.php 文件,并使用以下代碼完成該操作。
} ?>
截至今天,Zurmo支持以下類型的字段:
以下源代碼顯示了如何將它們整合到代碼中。
models->Animals.php
首先,您需要定義模型中的所有字段
在官網(wǎng)的示例代碼中都有,文檔中的那些代碼示例部分是以前的zurmo舊版本的代碼,在新版本的方法有些不一樣,以新版本代碼為正。
比如: models->Animals.php 中的這段代碼,就是舊版本的代碼。現(xiàn)在已經(jīng)換成新的代碼了。
"labels" => array( "cust_checkbox" => array("en" => "Check Box"), "cust_currency" => array("en" => "Currency"), "cust_date" => array("en" => "Date"), "cust_datetime" => array("en" => "Date Time"), "cust_decimal" => array("en" => "Decimal"), "cust_integer" => array("en" => "Integer"), "cust_picklist" => array("en" => "Pick List"), "cust_phone" => array("en" => "Phone"), "cust_radiopicklist" => array("en" => "Radio Pick List"), "cust_text" => array("en" => "Text"), "cust_textarea" => array("en" => "Text Area"), "cust_url" => array("en" => "URL"), ),寫(xiě)完以上的代碼就完成了部分了,具體的代碼在官網(wǎng)的示例模塊中都有,直接去下載就行了。鏈接:https://bitbucket.org/zurmo/z...
如果頁(yè)面效果沒(méi)有生效,記得 清除緩存 和 更新metadata.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26010.html
摘要:新建時(shí)創(chuàng)建默認(rèn)數(shù)據(jù)將基本字段添加到你的類在本節(jié)中,介紹如何向最近創(chuàng)建的類添加類型為,或的新的基本字段,在這個(gè)例子中,我們將向類添加一個(gè)新的字段首先要做的是定義類中的新字段。 新手入門(mén)指南-創(chuàng)建模塊 Customizing Zurmo ---- 自定義Zurmo 官方的動(dòng)物園為例:鏈接:http://zurmo.org/wiki/customi... 新建模塊 所有擴(kuò)展類將在自己的模塊...
摘要:命令用法為必選參數(shù),內(nèi)為可選參數(shù)描述此命令運(yùn)行讓升級(jí)參數(shù)用戶名登錄并運(yùn)行導(dǎo)入過(guò)程。也可以看回去之前的文章。 Zurmo的升級(jí)指南: 之前介紹了Zurmo的命令行工具,但是沒(méi)有詳細(xì)介紹這個(gè)更新命令,其實(shí)這個(gè)更新版本的命令也挺重要的,所有這里在說(shuō)一下,更新到新的版本(此功能待測(cè)試) 根據(jù)官方的方法是通過(guò)一個(gè)命令來(lái)實(shí)現(xiàn)的。zurmoc 命令 USAGE zurmoc updgradeZ...
摘要:命令用法為必選參數(shù),內(nèi)為可選參數(shù)描述此命令運(yùn)行讓升級(jí)參數(shù)用戶名登錄并運(yùn)行導(dǎo)入過(guò)程。也可以看回去之前的文章。 Zurmo的升級(jí)指南: 之前介紹了Zurmo的命令行工具,但是沒(méi)有詳細(xì)介紹這個(gè)更新命令,其實(shí)這個(gè)更新版本的命令也挺重要的,所有這里在說(shuō)一下,更新到新的版本(此功能待測(cè)試) 根據(jù)官方的方法是通過(guò)一個(gè)命令來(lái)實(shí)現(xiàn)的。zurmoc 命令 USAGE zurmoc updgradeZ...
閱讀 2311·2021-10-11 10:59
閱讀 2602·2021-10-11 10:58
閱讀 3304·2021-09-08 09:35
閱讀 3783·2021-09-02 15:21
閱讀 1455·2019-08-30 15:53
閱讀 2608·2019-08-29 14:16
閱讀 2068·2019-08-26 14:00
閱讀 2942·2019-08-26 13:52