我在我的表单中使用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,这样我就不必重复代码了吗?
答案 0 :(得分: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"
');
}
}
请注意,您传入的选项仍然优先。
答案 1 :(得分:-1)
当然,创建一个扩展sfWidgetFormTextareaTinyMCE的类,并将您的细节放在其构造函数中。
把它放在一个名为myTinyMCE的var
中并在构造函数中最后调用parent :: constructor(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