Создание нового виджета формы TinyMCE - PullRequest
2 голосов
/ 19 ноября 2010

Я использую 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, чтобы мне не пришлось повторять код?

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Например:

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 голосов
/ 19 ноября 2010

конечно, создайте класс, который расширяет sfWidgetFormTextareaTinyMCE и поместите ваши особенности в его конструктор.

поместите его, скажем, в переменную myTinyMCE

и, наконец, вызовите в конструкторе родитель:: 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);

 }

}

дополнительную информацию об этом можно найти здесь Как получить конструктор класса PHP для вызова конструктора родительского элемента его родителя

...