2016-07-27 28 views
3

在GridField編輯視圖中保存項目時編輯默認成功消息的最簡單方法是什麼?SilverStripe編輯網格成功消息保存

該消息似乎在方法doSave中的類GridFieldDetailForm中的變量中。

$message = _t(
     'GridFieldDetailForm.Saved', 
     'Saved {name} {link}', 
     array(
      'name' => $this->record->i18n_singular_name(), 
      'link' => $link 
     ) 
    ); 

回答

3

由於消息使用_t()功能它將試圖取在對應於當前用戶語言環境的郎文件中定義的值。在函數中定義的默認字符串只是在lang文件中找不到翻譯時的回退。

要更改您可以更新位於mysite/lang/{LANGUAGE_CODE}.yml

英文網站的陽明郎文件的消息,這將是:

# mysite/lang/en.yml 
# remember to flush after editing me :-) 
en: 
    GridFieldDetailForm: 
    Saved: 'My custom message using {name} and here is a link to the object: {link}' 

https://docs.silverstripe.org/en/3.4/developer_guides/i18n/

+0

Cheers Janne,但我需要改變實際的消息來包含例如新的變量而不是{name}和{link},在這種情況下,需要更改的不僅僅是翻譯。 – Faloude

2

像這樣的東西應該具體實現

工作
$form = $gridField->getConfig()->getComponentByType('GridFieldDetailForm'); 
$form->setItemEditFormCallback(function($form, $itemRequest) 
{ 
    // Replace save action with custom method in here 
}); 

對於更通用的實現,您可能需要擴展GridFieldDetailForm並覆蓋doSave,然後用您的自定義類替換GridFieldDetailForm組件。