问题标签 [zend-form2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
zend-framework2 - 如何将 MultiCheckbox 的元素绑定到 ZF2 中的对象?
我正在使用嵌套Zend\Form\Fieldset
的 s 和Zend\Form\Collection
s,它们提供了一种非常舒适的方式来将复杂的对象结构映射到表单,以便从表单输入中获取完整的对象(准备保存)。
我现在要添加到表单中的元素应该代表可能的协议列表。在数据库中,它是一个带有列的简单表,id
对象name
的结构可以描述为Endpoint has Protocol[]
。我定义了一个MultiCheckbox
(如下),但我不知道如何将此元素绑定到Protocol
原型。对于Fieldset
它通过Fieldset\setObject(...)
.
如何获取Zend\Form
从复选框创建对象的表单处理机制?
到目前为止的代码:
EndpointFieldset.php
myform.phml
更新
我找到了保存新条目的解决方法:我只需手动完成表单提供的对象并根据值创建Protocol
对象。MultiCheckBox
但是,当我将完整对象传递给更新表单(以编辑现有条目)时,我会收到一条通知,并且不会构建复选框:
注意:类 My\DataObject\Protocol 的对象无法在第 202 行的 /var/www/path/to/project/vendor/zendframework/zend-form/src/View/Helper/FormMultiCheckbox.php 中转换为 int
我对此的解释是,MultiCheckBox
期望值作为原始类型(例如int
)的数组。相反,它会获取一个包含对象的数组Protocol
并尝试将其值用于in_array(...)
-- 但这是行不通的。
zend-framework2 - 如何用 ZF2 中的自定义元素替换表单元素?
如果没有选中列表的复选框,我正在努力MultipleCheckbox
解决表单验证失败的问题,尤其是这个问题。(请参阅此处的详细信息。)
为了解决这个问题,我想用Zend\Form\Element\Checkbox
一个我覆盖该getInputSpecification()
方法的自定义替换:
Checkbox.php
module.config.php
但是我的自定义Checkbox
类并没有取代 Zend 的 on。它并没有被完全忽略——我在 Xdebug 中看到,它在某些情况下使用(例如,用于一个RadioButton
元素和一些单个Checkbox
元素)。但在其他一些情况下(特别是对于 my 的复选框MultiCheckbox
)不是。
我究竟做错了什么?如何Zend\Form\Element
为整个应用程序替换一个?
zend-framework2 - zf2 表单禁用选择选项
是否可以禁用选择元素中的选项?
我有一个带有选择元素的表单,默认情况下有很多可用选项。在表单创建期间,根据从数据库中检索到的信息,我想禁用某些选项。
一些研究提出了
$form->get('selectElement')->setAttribute("disabled", array(0, 1, 2));
......应该禁用前 3 个选项,但不幸的是没有。
forms - 如何在 Zend Framework 2 中实现表单预览页面?
在我当前的 ZF2 项目中,我有一个复杂Form
的多层嵌套Fieldset
s,它们反映了要在后台保存的对象的结构。目前,如果数据有效,则数据直接发送Controller
到数据库并保存到数据库中。
现在应该实现一个中间步骤:用户应该有机会在将输入数据保存到数据库之前检查它。如果他认为它是正确的,则应该提交表单数据并将其保存到数据库中;如果用户决定必须编辑表单,他应该能够返回到表单并更正它。(当然所有这些都在一个循环中,直到用户对表单感到满意并提交它。)
这意味着,需要一个预览页面。此页面/action
应该获取数据并以某种方式显示它(作为表格或但是)。数据需要临时存储在某个地方,并准备好与Form
对象“水合”并保存。如果用户想要更新表单,则应该恢复表单。
我该如何实现这个要求?
更新
我正在寻找服务器端解决方案。预览应该是一个新页面,而不是同一页面上的 JavScript/客户端生成的 HTML(用于跟踪和其他目的)。
zend-framework2 - 如何使字段多次注入到ZF2中唯一的Form?
我有一个非常复杂的表格,有几个嵌套Fieldset
的 s 和Collection
s。表单的某些部分是恒定的,其他部分是可变的:
BasicSettings EndpointBasicSource(常量部分) EndpointBasicTarget(常量部分) SpecificSettings EndpointType{TYPE}Source(变量部分) EndpointType{TYPE}Target(变量部分)
EndpointBasicSource
andEndpointBasicTarget
包含一个,ServerFieldset
提供Field
server_name
. 这意味着:表单至少包含2
server_name
Field
s。
在SpecificSettings
取决于EndpintType
否,一方或双方可以包含一个服务器Collection
(options.target_element.type => ServerFieldset
),其中最多有5
服务器。
这是一个高度简化的模式:
现在服务器应该是唯一的(在server_name
表单中的所有字段中,值可能不会重复出现)。但是如何做到这一点?问题是,它ServerFieldset
是通过多个其他Fieldset
s/ Collection
s 注入的,并且唯一性验证需要与server_name
Field
所有这些 s 相关。
如何解决这个问题并server_name
在整个表单中实现唯一性验证?
zend-framework2 - ZF2.4 文件输入重命名上传
我有一个 fieldset 实现InputFilterProviderInterface
,所以它有这个功能getInputFilterSpecification
。该__construct()
函数正在添加一个文件元素('logo'),如下所示:
在我的getInputFilterSpecification
函数中,如何添加 RenameUpload 输入过滤器?
我尝试了以下几种变体,但均未成功:
如何添加 FileRenameUpload 过滤器 ( Zend\Filter\File\RenameUpload
)?
[编辑]
我已将数组更改为:
哪个“似乎”正在工作,但是我现在收到此消息-
文件 'C:\xampp\tmp\phpDA68.tmp' 无法重命名。处理文件时出错。
可能发生了哪些错误?我如何解决它?
zend-framework2 - 文件输入上的 getdata 仅返回文件名,而不是详细信息数组
我有一个表单,其中包含一个包含文件上传字段的字段集。当我执行var_dump
on$form->getData()
时,会显示文件字段的数据数组:
当我调用时,如何让元素只返回名称getData
?
例如
我正在将表单用于其他事情并且已经被覆盖getData
,因此希望将答案保留在字段集中。
validation - 如何使字段验证依赖于 ZF2 中另一个 Fieldset 的字段?
在我的表单中,我有一些字段,应根据以下另一个子字段集中的某些字段(-s)进行验证Form
:
所以有一些验证规则需要实现,它们会影响多个字段集的字段。例如:
至少
form.main.*.xyz.field_d
必须设置。这意味着,我不能required
直接在 中定义规则XyzFieldset
,因为有一个条件并且它位于XyzFieldset
.的值
form.main.foo.field_a
必须是grater than
的值form.main.bar.field_c
。
在哪里/如何定义取决于表单其他子字段集的字段值的验证规则?
zend-framework2 - 如何将类添加到字段集中?
我在 ZF2 中有一个表单,其中添加了以下元素:
在我的视图脚本中,我有以下行:
生成以下html:
如何将类添加到字段集中?
我尝试将以下内容添加到options
数组、attributes
数组中,并作为主数组的一个选项,但它没有将类添加到字段集中:
[编辑]
查看代码(\Zend\Form\View\Helper\FormRow::render
)我发现了这个:
这意味着将类添加到字段集(或图例,如果需要)的唯一方法是扩展视图助手。
php - ZF3,zend\form注解:事后如何创建Fieldset并添加元素和输入过滤器
我有两个涉及 Zend\Form\Annotation\AnnotationBuilder 的问题。
首先,我想告诉 AnnotationBuilder 创建 Zend\Form\Fieldset 而不是 Zend\Form\Form(因为文档说为实体使用字段集是一种很好的做法)。所以我的实体类说@Annotation\Type("Fieldset")
,当我在 AnnotationBuilder 上调用时,一个 Fieldset 被实例化createForm()
——到目前为止一切都很好。但我无法让验证器针对字段集元素运行。作为一个实验,我有一个控制器操作:
当我提交表单时发生的情况是ìsValid()
返回false,我得到了我在事后添加的“帽子”元素的通用“值是必需的并且不能为空”,并且似乎没有一个验证器运行反对其他字段(错误消息数组否则为空)。所以,我想知道通过注释和 AnnotationBuilder 创建 Fieldset 而不是 Form 的正确方法。请注意,当我使用注释创建的表单而不是 Fieldset 执行所有这些操作时,一切正常。
其次,我希望能够混合和匹配通过注释创建的元素(以及过滤器和验证器)与动态添加的其他元素。为什么?好吧,在指定列宽的 Doctrine 注释旁边有一个字符串的最大长度验证器的想法对我来说很有意义,加上这些注释的所有其他好处——我知道不是每个人都对它们着迷。因此,下面示例中的“Hat”元素就是这样一个元素,即我想在表单被实例化或以其他方式初始化后添加的元素。同样,这确实适用于表单而不是字段集。(实际上,我很乐意通过注释添加元素,但是对于构造函数具有依赖关系的奇异表单元素似乎不可能做到这一点——改天再问。)
作为记录,这里是相关部分的实体类
提前谢谢了。