【问题标题】:Joomla component "attachments" allow html in inputJoomla 组件“附件”允许输入 html
【发布时间】:2013-03-01 22:46:25
【问题描述】:

这个问题可能有点特别。我正在使用这个 Joomla 2.5 扩展来让作者能够在文章中添加附件:Joomla Attachments

该扩展程序在后端表单中呈现一个名为“description”的输入字段,以插入所提供文件的文件描述。不幸的是,它没有采用我需要的 HTML 标签。通过保存表单,似乎 strip_tags() 或 preg_replace() 或类似的东西可以清理输入。我梳理了附件扩展的代码,但找不到清理或保存输入的地方。

希望留在 Stackoverflow 的问答规则中:

是否有从 Joomla Core 继承的扩展类以将表单数据保存到 DB 表(也可以负责清理和验证用户输入)?

感谢您的任何想法,

托尼

【问题讨论】:

    标签: joomla components attachment strip-tags


    【解决方案1】:

    你应该先看看字段是如何定义的:

    1.表单定义

    看看

    administrator/component/yourcomponent/models/forms/somename.xml
    

    在那里你可以找到一个表单定义,如果是这样,它也会指定字段类型:根据类型,有几个可用的过滤器;例如默认的 textarea 会去除 html,你需要设置

    filter="raw"
    

    为了启用它。字段列表见http://docs.joomla.org/Standard_form_field_and_parameter_types,点击即可找到可用的格式选项。

    2。型号

    如果模型从 JModelAdmin 或 JModelForm 或其他 JModel* 继承,它将自动处理表单数据与数据库的绑定,查找应接收表单 $data 的 Save 函数。

    3.更多 至少还有十几种可能性。如果上述方法没有帮助,请尝试查找表单:可能您只需查看标记即可找到它。获得表格后,请检查以下字段:

    • 选项
    • 任务
    • 查看

    这应该可以帮助您找到基于表单调用的php代码:

    • 如果设置了视图,也许在 ./views/someview/view.html.php 中可以找到保存逻辑。
    • 如果设置了任务,则在./controller.php中查找同名函数
    • 如果任务包含“.”,则在 ./controllers/ 文件夹中查找控制器。
    • 如果 option 不是您的组件的名称,则您的组件正在将数据发送到另一个组件进行保存,并且很可能设置了 return-url

    【讨论】:

    • 嗨,Riccardo,感谢您的详细回答。表单定义 filter="" 不会改变任何东西,但我发现了两件事。表单具有带有选项和任务的隐藏输入字段: 和控制器(controller/params.php)似乎从表单中获取数据: $data = JRequest::getVar('jform', array(), 'post', 'array', JREQUEST_ALLOWHTML);我以为我可以将 JREQUEST_ALLOWHTML 添加到其中,不幸的是这也没有改变任何东西?对这两件事有什么想法吗?
    • 是的,是的!找到了谢谢!控制器绑定表单数据,通过添加允许原始它工作 if (!$attachment->bind(JRequest::get('post', JREQUEST_ALLOWRAW))
    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2015-07-01
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多