desarrollo-cespi/dc-reloaded-form-extra-plugin

一套有用的额外小部件、验证器、模块和其他实用工具,适用于您的symfony 1项目

安装: 8

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 9

分支: 0

开放问题: 0

语言:JavaScript

类型:symfony1-plugin

dev-master 2013-12-27 16:55 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:13:42 UTC


README

dcReloadedFormExtraPlugin 添加了一些有用的额外小部件、验证器、模块等。

安装

  • 通过composer
{
  "require": {
    "desarrollo-cespi/dc-reloaded-form-extra-plugin": "dev-master"
  }
}
  • 或使用git,从源代码安装。

  • 在项目配置中启用插件

// in config/ProjectConfiguration.class.php add:
$this->enablePlugin("dcReloadedFormExtraPlugin");
  • 清除缓存

小部件

pmWidgetFormPropelChoiceOrCreate

pmWidgetFormPropelChoiceOrCreate 扩展了 sfWidgetFormPropelChoice 提供的功能,添加了一个链接,打开新窗口,允许用户创建小部件模型的对象。然后,该对象可供选择。

用法

像使用 sfWidgetFormPropelChoice 一样使用它,除了以下新参数外

  • url
  • new_label:链接的标签。默认为 新建
  • ws_url

启用 dc_ajax 模块。

注意:需要 jQuery

pmWidgetFormDoctrineChoiceOrCreate

pmWidgetFormDoctrineChoiceOrCreatepmWidgetFormPropelChoiceOrCreate 的 Doctrine 版本。因此,像使用 pmWidgetFormPropelChoiceOrCreate 一样使用它。

mtWidgetFormPlain

mtWidgetFormPlain 提供了在表单中显示普通值的方式。

用法
$this->widgetSchema["some_field"] = new mtWidgetFormPlain(array("add_hidden_input" => true));

有关更多选项,请参阅小部件的文档注释。

dcWidgetFormAjaxDependence

此小部件与选择小部件一起使用,根据观察到的小部件的选择过滤值。假设小部件A11观察小部件A1的变化,而A1观察A的变化。在这种情况下,可以有以下场景

  • 表单将保存A、A1和A11的值
  • 表单将仅保存A11的值(A和A1仅用于过滤目的)

对于第一种情况,只需像使用小部件一样使用即可。但对于第二种情况,需要在表单实现中进行一些技巧。

if (!$this->getObject()->isNew())
{
  $a11Object=$this->getObject()->getA11();
  $this->setDefault('a1_id',$a11Object->getA1Id());
  $this->setDefault('a_id',$b111->getB11()->getA1()->getAId());
}
用法
$w = new sfWidgetFormInput();
$this->widgetSchema["some_field"] = new dcWidgetFormAjaxDependence(array(
  "dependant_widget" => $w,
  "observe_widget_id" => "some_form_some_field",
  "get_observed_value_callback" => array(get_class($this), "getValueForUpdate")
));

然后必须实现 getValueForUpdate 方法。

dcWidgetFormPropelAjaxDependence

与 dcWidgetFormAjaxDependence 相同,但检索来自 Propel 类的对象。

dcWidgetFormJQueryActivator

基于 dcWidgetFormJQueryDependence。当另一个小部件发生变化且给定条件评估为真时,它启用了或禁用了小部件。

mtWidgetFormPlain

mtWidgetFormPlain 显示一个普通值。

用法
$this->setWidget("some_field", new mtWidgetFormPlain());

dcWidgetFormChangeForCredentials

dcWidgetFormChangeForCredentials 根据用户的凭据显示两个小部件之一。

用法
$this->setWidget("some_field", new dcWidgetFormChangeForCredentials(new array(
  "credentials" => array(array("admin", "some_credential")),
  "widget_without_credentials" => new mtWidgetFormPlain(),
  "widget_with_credentials" => new sfWidgetFormInput()
)));

mtWidgetFormPartial

mtWidgetFormPartial 显示一个部分。

用法
$this->setWidget("partial", new mtWidgetFormPartial(array(
  "module" => "some_module",
  "partial" => "some_partial",
  "form" => $this
));

pmWidgetFormSelectJQueryAutocomplete

pmWidgetFormSelectJQueryAutocomplete 显示基于选择标签的自动完成。此小部件基本上是一个渲染器,因此它可以用作 sfWidgetFormChoice、sfWidgetFormPropelChoice 等的渲染器。

需要 jQuery UI。

用法
$this->getWidget("city_id")->setOption("renderer_class", "pmWidgetFormSelectJQueryAutocomplete");

pmWidgetFormJQuerySearch

pmWidgetFormJQuerySearch 显示一个具有搜索功能输入文本。

用法
$this->setWidget("some_field") = new pmWidgetFormJQuerySearch(array(
  "url" => "@url_that_performs_the_search"
));

jquery_search.js 提供了一个具有显示结果的函数的 JavaScript 类。请参阅 pmWidgetFormPropelJQuerySearch 的示例。

pmWidgetFormPropelJQuerySearch

pmWidgetFormJQuerySearch 显示一个具有搜索功能的输入文本,可以搜索 propel 对象。

用法
$this->setWidget("some_field_id", new pmWidgetFormPropelJQuerySearch(array(
  "model" => "SomeField",
  "column" => "some_column"
)));

mtWidgetFormInputDate

mtWidgetFormInputDate 显示一个用于选择日期的输入文本。必须使用 mtValidatorDateString 验证,并且需要 jQuery 和 jQuery UI。

用法
$this->setWidget("date", new mtWidgetFormInputDate());

mtWidgetFormEmbed

嵌入动态数量表单的小部件。此小部件仅执行“查看”部分。新对象和先前对象的保存和删除必须手动完成。

mtWidgetFormCuil

表示阿根廷CUIL/CUIT。

alWidgetFormTimepicker

表示小时或小时范围。

此小部件是jQueryUITimepicker(http://fgelinas.com/code/timepicker/)的包装器。

用法

JavaScript小部件可以以多种方式进行配置,因此您可以为它定义一个键值对数组(在作者页面或在此小部件实现中定义的可用选项)来为其赋值。此外,它还允许创建单个或时间范围值。

对于单个时间值,您只需要

$this->setWidget("single_hour", new alWidgetFormTimepicker(array('config' => array('jquery_widget_option_key' => 'jquery_widget_option_value'))));

对于时间范围值

$this->setWidget("range_hour", new alWidgetFormTimepicker(array('config' => array('jquery_widget_option_key' => 'jquery_widget_option_value'), 'enable_timerange' => true)));

注意:请记住,此小部件使用alValidatorTimepicker验证器,并且应根据值是单个还是范围进行配置。

在验证器部分检查有关此问题的进一步说明。

验证器

mtValidatorDateString

验证字符串表示的日期。

alValidatorTimepicker

验证字符串表示的单个或范围小时。

它接受一个名为enable_timerange的选项(默认设置为false),当设置为true时,将期望一个类似于这样的字符串:“HH:MM-HH:MM”。否则,它将验证单个值“HH:MM”。

范围值

$this->setValidator("range_hour", new alValidatorTimepicker(array('enable_timerange' => true)));

单个值

$this->setValidator("single_hour", new alValidatorTimepicker(array('enable_timerange' => false)));

$this->setValidator("single_hour", new alValidatorTimepicker());

mtValidatorCuil

验证字符串中的CUIL/CUIT。

mtValidatorCuilExtended

验证mtWidgetFormCuil生成的字符串中的CUIL/CUIT。

用法
$this->setValidator("date", new mtValidatorDateString());

表单自动初始化

此插件提供表单类(扩展sfFormPropel和sfFormFilterPropel),可以自动初始化表单。

您只需更改BaseFormPropel(和BaseFormFilterPropel)的父类即可使用此功能。

abstract class BaseFormPropel extends pmFormPropel
{
}

abstract class BaseFormPropel extends pmFormFilterPropel
{
}

这些类使用插件的小部件和验证器自动初始化小部件和验证器

  • 取消创建时间和更新时间字段

  • 使用mtWidgetFormInputDate用于日期小部件

  • 将名为“附件”的字段替换为sfWidgetFormInputFile

  • 隐藏创建者和更新者字段

  • 使用mtValidatorDateString用于日期验证器

  • 使用sfValidatorFile用于名为“附件”的字段

对于开发者

  • 如果您需要创建ajax操作,请使用dc_ajax模块。

待办事项

pmWidgetFormPropelChoiceOrCreate

  • 将sfWidgetFormPropelChoice的更多参数添加到getPropelChoices操作(和getDoctrineChoices)。