2015-03-02 34 views
1

我正在使用帶有advancedworkflow插件的SilverStripe(版本3.1.6)。帶有DataObject的Silverstripe Advancedwrokflow未顯示按鈕

我的網站主要是建立在數據對象上。 我已經分配在.yml文件既對象和模型admin作爲文檔中描述:

MyObject: 
    extensions: 
     - WorkflowApplicable 
MyObjectAdmin: 
    extensions: 
     - AdvancedWorkflowExtension 

我也分配在該對象的工作流程選項卡中的工作流程。 我正在使用模板審閱和批准工作流程。

當我在編輯頁面時看到按鈕啓動工作流程時,該按鈕不顯示數據對象。我是否需要在對象級別添加代碼,或者修改模板工作流以使用數據對象? 謝謝!

+0

保存數據對象後可以看到按鈕嗎? – jfbarrois 2015-03-02 20:14:01

+0

號只挖鬥到代碼 – 2015-03-02 20:46:16

+0

頁面上 advancedworkflow /碼/擴展/ WrokflowApplicable.php 上線135功能公共職能updateCMSActions(FieldList中$行動){ 不叫上數據對象,但呼籲頁面。這是添加我相信的按鈕的功能。這是否有助於任何人瞭解問題? – 2015-03-02 21:08:27

回答

1

我在這個模塊上爲/做了很多工作,但很少做關於工作流和數據對象的任何事情 - 但是 - 我記得您需要使您的自定義DataObjects「工作流感知」,請嘗試以下內容mysite/_config/config.yml

MyCustomeDataObject: 
    extensions: 
    - WorkflowApplicable 

...然後運行dev/build

+0

感謝您的及時答覆。我已經做到了,並且運行了dev/build。 我也看到了數據庫中的變化。但最初的動作按鈕仍然丟失... – 2015-03-02 19:20:11

1

如果您在DataObject中覆蓋了getCMSFields()方法,但不使用scaffolding(通過調用fields = parent :: getCMSFields()),則需要確保調用'updateCMSFields',以便WorkflowApplicable擴展可以做它的事

public function getCMSFields(){ 
    $fields = new FieldList(); 
    ... 
    $this->extend('updateCMSFields', $fields); 
    return $fields; 
} 
+0

謝謝你。我沒有使用$ fields = parent :: getCMSFields(); – 2015-03-02 20:02:24

+0

有該說明的dataObject時#getCMSActions() 「必須由固體數據對象的過載,從而使該數據對象的自定義操作,包括數據對象的擴展的自定義操作可能會被添加到EditForm。」 所以,你可能需要做的是,在您的自定義數據對象: 公共職能getCMSActions(){$ 行動=父:: getCMSActions(); $ this-> extend('updateCMSActions',$ actions); \t return $ actions; } – jfbarrois 2015-03-02 20:23:38

+0

謝謝! 能否請您解釋一下應該是什麼在功能或發送一個鏈接到該參考? – 2015-03-02 20:28:09