摘要:新建時創建默認數據將基本字段添加到你的類在本節中,介紹如何向最近創建的類添加類型為,或的新的基本字段,在這個例子中,我們將向類添加一個新的字段首先要做的是定義類中的新字段。
新手入門指南-創建模塊
Customizing Zurmo ---- 自定義Zurmo
官方的動物園為例:鏈接:http://zurmo.org/wiki/customi...
新建模塊
所有擴展類將在自己的模塊中定義;在這個例子中,模塊將被稱為animals。文件目錄結構如下:
在modules的文件夾下新建一個名為 animals 的新文件夾。
PS:名字單復數沒關系,但是 Zurmo 自帶的模塊都是采用復數形式,所以最好統一。
模塊將會有以下文件:
PS:這是官方給出的模塊的基本文件結構,但是根據我自己的經驗,作為一個最簡單的模塊的話,不需要這么多文件,具體的文件目錄,請參看CSDN博客:http://blog.csdn.net/tyrannoaurus/article/details/73850397。
下面的表格是關于每個文件的作用的:
為了在Zurmo應用程序中集成和安裝該模塊,需要創建其他兩個文件
perInstanceConfig.php:ZurmoZoo 項目的自定義配置。在 protected/config/ 下新建
array( "animals", ), ); //引用文件,所以文件夾的名字一定要對應上 $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.*"; ?>
還有兩個文件,在 extensions/ 下新建 zurmozoo.components.ZurmoZooCustomManagement 和 zurmozoo.utils.ZurmoZooInstallUtil
ZurmoZoo 項目的具體定制管理 ZurmoZooCustomManagement.php 照寫就行了
/** * 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"])) { //加入到側邊欄的配置中 $metadata["global"]["tabMenuItemsModuleOrdering"][] = "animals"; $shouldSaveZurmoModuleMetadata = true; } if($shouldSaveZurmoModuleMetadata) { ZurmoModule::setMetadata($metadata); GeneralCache::forgetAll(); } //------------------------------------------------------------------- //這段代碼為官方的例子,作用是和 Activity 關聯起來,但是如果我們的應用中不需要用到 Activity 的話,是不用引用這個代碼的,引用了這個代碼之后,在數據庫中會有記錄,可能以后的一些操作會報錯也不一定。 $metadata = Activity::getMetadata(); if(!in_array("Animal", $metadata["Activity"]["activityItemsModelClassNames"])) { $metadata["Activity"]["activityItemsModelClassNames"][] = "Animal"; Activity::setMetadata($metadata); GeneralCache::forgetAll(); } //------------------------------------------------------------------- //新建時創建默認數據 Yii::import("application.extensions.zurmoinc.framework.data.*"); Yii::import("application.modules.animals.data.*"); $defaultDataMaker = new AnimalsDefaultDataMaker(); $defaultDataMaker->make(); } }
將基本字段添加到你的類
在本節中,介紹如何向最近創建的類添加類型為integer,float或string的新的基本字段,在這個例子中,我們將向Animal類添加一個新的字段 --description
首先要做的是定義類中的新字段。打開文件
protected-> modules-> animals-> models-> Animal.php
并添加字段描述的定義如下。
array( "name", "description", ), //類的普通字段 "relations" => array( "type" => array(RedBeanModel::HAS_ONE, "OwnedCustomField", RedBeanModel::OWNED), ), //和 OwnedCustomField 表的關系 type "rules" => array( array("name", "required"), array("name", "type", "type" => "string"), array("name", "length", "max" => 100), array("description", "type", "type" => "string"), ), //字段的規則,包括在頁面的規則 和存入數據庫的時候,會轉化為字段的類型 "elements" => array( "description" => "TextArea", ), //字段的html類型, "customFields" => array( "type" => "AnimalType", ), //和relations 相對應的屬性 , 會存入數據庫中, "defaultSortAttribute" => "name", //list頁面數據的默認排序方式 "noAudit" => array( "description" ), //noAudit 表示這個字段的操作不會被記錄到操作記錄中 ); return $metadata; } ….. ?>
現在我們需要將該字段放在頁面中。打開文件
protected-> modules-> animals-> views-> AnimalEditAndDetailsView.php
并定位新創建的字段,如下所示。只是部分代碼
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()); } } ?>
如您所見,我們添加了該字段的位置
array("cells" => array( array( "elements" => array( array("attributeName" => "description", "type" => "TextArea"), ), ), ) ),
而且還有以下鏈接:
array("type" => "AnimalDeleteLink", "renderType" => "Details"),
這個不是一定要的,但是如果需要,您可以在 details 頁面刪除動物。為了實現這個功能,必須在
protected-> modules-> animals-> elements->
操作下添加 AnimalDeleteLinkActionElement.php 文件,并使用以下代碼完成該操作。
} ?>
截至今天,Zurmo支持以下類型的字段:
以下源代碼顯示了如何將它們整合到代碼中。
models->Animals.php
首先,您需要定義模型中的所有字段
在官網的示例代碼中都有,文檔中的那些代碼示例部分是以前的zurmo舊版本的代碼,在新版本的方法有些不一樣,以新版本代碼為正。
比如: models->Animals.php 中的這段代碼,就是舊版本的代碼。現在已經換成新的代碼了。
"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"), ),寫完以上的代碼就完成了部分了,具體的代碼在官網的示例模塊中都有,直接去下載就行了。鏈接:https://bitbucket.org/zurmo/z...
如果頁面效果沒有生效,記得 清除緩存 和 更新metadata.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35888.html
摘要:新建時創建默認數據將基本字段添加到你的類在本節中,介紹如何向最近創建的類添加類型為,或的新的基本字段,在這個例子中,我們將向類添加一個新的字段首先要做的是定義類中的新字段。 新手入門指南-創建模塊 Customizing Zurmo ---- 自定義Zurmo 官方的動物園為例:鏈接:http://zurmo.org/wiki/customi... 新建模塊 所有擴展類將在自己的模塊...
摘要:命令用法為必選參數,內為可選參數描述此命令運行讓升級參數用戶名登錄并運行導入過程。也可以看回去之前的文章。 Zurmo的升級指南: 之前介紹了Zurmo的命令行工具,但是沒有詳細介紹這個更新命令,其實這個更新版本的命令也挺重要的,所有這里在說一下,更新到新的版本(此功能待測試) 根據官方的方法是通過一個命令來實現的。zurmoc 命令 USAGE zurmoc updgradeZ...
摘要:命令用法為必選參數,內為可選參數描述此命令運行讓升級參數用戶名登錄并運行導入過程。也可以看回去之前的文章。 Zurmo的升級指南: 之前介紹了Zurmo的命令行工具,但是沒有詳細介紹這個更新命令,其實這個更新版本的命令也挺重要的,所有這里在說一下,更新到新的版本(此功能待測試) 根據官方的方法是通過一個命令來實現的。zurmoc 命令 USAGE zurmoc updgradeZ...
閱讀 1854·2023-04-25 23:28
閱讀 563·2023-04-25 22:49
閱讀 2240·2021-09-27 13:34
閱讀 5157·2021-09-22 15:09
閱讀 3608·2019-08-30 12:52
閱讀 2740·2019-08-29 15:26
閱讀 658·2019-08-29 11:12
閱讀 2189·2019-08-26 12:24