2010-11-19 13 views
2

我在我的表單中使用了tinyMCE,並且已經注意到我只使用兩種配置:一種非常有限的配置,對於網站的管理員來說,比如評論和更復雜的配置。創建一個新的TinyMCE表單部件

目前我做的是通過在每個重複形式的這種代碼:

//TinyMCE 
    $this->widgetSchema['comment'] = new sfWidgetFormTextareaTinyMCE(array(
     'width' => 550, 
     'height' => 150, 
     'config' => ' 
    theme_advanced_buttons1 : "bold,italic,separator,bullist,separator,link, sub,sup,separator,charmap", 
    theme_advanced_buttons2 : "", 
    theme_advanced_buttons3 : "", 
    theme_advanced_path : false, 
    language : "fr" 
' 
    )); 

難道我(以及如何)創建兩個窗口小部件,說TinyMCEsmall和TinyMCEfull,這樣我就不必重複代碼?

回答

3

像這樣:

class sfWidgetFormTextareaTinyMCESmall extends sfWidgetFormTextareaTinyMCE 
{ 
    protected function configure($options = array(), $attributes = array()) 
    { 
    parent::configure($options, $attributes); 

    //assuming there are no options on the parent class that you need, call setOptions. If you need to retain some, make individual setOption calls. 
    $this->addOption('width', 550); 
    $this->addoption('height', 150); 
    $this->addOption('config', ' 
theme_advanced_buttons1 : "bold,italic,separator,bullist,separator,link, sub,sup,separator,charmap", 
theme_advanced_buttons2 : "", 
theme_advanced_buttons3 : "", 
theme_advanced_path : false, 
language : "fr" 
'); 
    } 
} 

請注意,您傳入的選項仍將優先。

+0

我收到一個錯誤:「sfWidgetFormTextareaTinyMCESmall不支持以下選項:'label'。」 – Manu 2010-11-23 15:29:15

+0

看起來像調用setOptions覆蓋sfWidgetForm使用的「標籤」選項。這應該解決它。 – 2010-11-23 16:16:00

+0

這很奇怪。新版本不會導致任何錯誤,但我有一個帶有默認選項的小型MCE textarea。 – Manu 2010-11-23 16:30:53

-1

當然,創建一個類來擴展sfWidgetFormTextareaTinyMCE並把你的細節放在它的構造函數中。

把它假設一個名爲myTinyMCE

var和在構造函數中,最後調用父類的構造函數::(myTinyMCE)

,你給的設置作爲參數。

然後在形式不叫sfWidgetFormTextareaTinyMCE了,但你的類創建...

class myClass extends sfWidgetFormTextareaTinyMCE { 

public class __construct(){ 
     myTinyMCE = array(
     'width' => 550, 
     'height' => 150, 
     'config' => ' 
    theme_advanced_buttons1 : "bold,italic,separator,bullist,separator,link, sub,sup,separator,charmap", 
    theme_advanced_buttons2 : "", 
    theme_advanced_buttons3 : "", 
    theme_advanced_path : false, 
    language : "fr" 
' 
    ); 

    parent::__construct(myTinyMCE); 

} 

} 

更多信息可以在這裏找到How do I get a PHP class constructor to call its parent's parent's constructor

+0

這不是在Symfony中這樣做的正確方法。 – 2010-11-19 14:55:52

相關問題