desarrollo-cespi / dc-reloaded-form-extra-plugin
一套有用的额外小部件、验证器、模块和其他实用工具,适用于您的symfony 1项目
Requires
- composer/installers: ~1.0
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
pmWidgetFormDoctrineChoiceOrCreate
是 pmWidgetFormPropelChoiceOrCreate
的 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)。