【问题标题】:Creating a new TinyMCE form widget创建一个新的 TinyMCE 表单小部件
【发布时间】:2011-05-12 14:28:36
【问题描述】:

我在我的表单中使用 tinyMCE,并注意到我只使用了两种配置:一种非常有限,用于 cmets 之类的东西,另一种更复杂,用于网站管理员。

目前我通过在每种形式中重复这种代码来做到这一点:

    //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,这样我就不必重复代码了吗?

【问题讨论】:

    标签: forms symfony1 tinymce widget


    【解决方案1】:

    当然,创建一个扩展 sfWidgetFormTextareaTinyMCE 的类,并将您的详细信息放入其构造函数中。

    把它放在一个叫做 myTinyMCE 的变量中

    最后在构造函数中调用 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

    【讨论】:

    • 这不是在 Symfony 中执行此操作的正确方法。
    【解决方案2】:

    像这样:

    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"
    ');
      }
    }
    

    请注意,您传入的选项仍将优先。

    【讨论】:

    • 我收到一个错误:“sfWidgetFormTextareaTinyMCESmall 不支持以下选项:'label'。”
    • 看起来调用 setOptions 会覆盖 sfWidgetForm 使用的“标签”等选项。那应该可以解决它。
    • 这很奇怪。新版本不会导致任何错误,但我有一个带有默认选项的 tinyMCE 文本区域。
    • 我不知道为什么那行不通。您可以为每个选项尝试单独的 addOption 调用。没有“addOptions”方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2010-12-22
    • 1970-01-01
    • 2017-03-15
    • 2015-02-06
    • 1970-01-01
    • 2013-08-29
    相关资源
    最近更新 更多