问题标签 [symfony2-forms]

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.

0 投票
1 回答
1047 浏览

symfony - 初始化自定义类型表单数据

我已经定义了一个这样的自定义表单:

我想创建这个表单并使用如下数据对其进行初始化:

DogType并且UserType只有NotBlank约束

每次我想验证数据时,它总是会为每个字段抛出错误,如下所示:

不应该是我正在初始化所有值吗?那么,如果用户没有为此字段传递任何值,是否使用我定义的值进行初始化?EditOwnerProfileType在表单上初始化值的正确方法是什么?

编辑:我尝试更改表单创建(仅用于测试),但也没有工作。

EDIT2:包括 DogType 和 UserType 代码

我正在使用 Symfony 2.7.9

0 投票
1 回答
71 浏览

symfony - 更新时不更新实体替换它

我有一个具有地址实体的分支实体,一个地址可以链接到许多其他类型的实体,我想要做的是当我在分支实体中编辑地址而不是用我想要的新数据编辑地址时创建一个新的地址实体并将其附加到分支,现在发生的是它正在编辑地址,问题是我有其他实体链接到该地址。

这是我的表格:

这是我的行动

如您所见,它检查新的地址实体是否存在,如果确实存在,则将其设置在 $entity->setAddress($addressEntity);,如果不存在,则创建一个新的 Address() 并设置值,这确实有效,它创建了一个新地址并将其保存在表中,但由于某种原因,它也更新了旧地址实体。

0 投票
3 回答
1202 浏览

php - 如何在 Symfony2 中“动态”禁用一个变压器验证错误

我有一个包含许多字段和验证组的表单,这些字段也包含一些视图数据转换器。

我需要部分抑制验证表单(基于提交数据的组):

当你这样做时,表单将执行基本的完整性检查(禁用验证)并且仍然抛出来自转换器的验证错误(创建转换器)。

使用该POST_SUBMIT事件并防止ValidationListener被调用(抑制表单验证):

这对我来说不是一个解决方案,因为它意外地禁用了不仅仅是表单验证的东西。

问题是:如何“动态”禁用一个变压器验证错误?

例子:

我有一个RepeatedType属于person验证组的表单字段并包含一个视图转换器( RepeatedType ),当数组中的值不同( ValueToDuplicatesTransformer )时,此转换器会引发异常。

因此,即使验证组是company,表单也会显示错误属于RepeatedType来自转换器的字段。

这里的问题是:当验证组不是时如何禁用错误?ValueToDuplicatesTransformerperson

0 投票
1 回答
278 浏览

php - Symfony2 从提交的表单数据中删除 id 字段

我的 Symfony2 表单有一个包含实体 ID 的文本字段。

我使用以下方法来实现这一点:

当提交代表现有实体的表单时,ID 被传递,Doctrine 搜索访问器方法来修改 ID。此时会抛出异常,因为实体不允许更改 ID。

Symfony2 中提供只读字段的常用方法是什么,该字段不打算保存?

0 投票
1 回答
433 浏览

rest - Symfony2 FOSRestBundle 返回包含在表单中的实体字段

我在 Symfony2 中使用 FOSRestBundle 来提供 REST 服务。

目前,我的控制器在请求资源时返回一个实体(例如/users/40)。前端包含一个允许操作此资源并使用 PUT 将其发送回的表单。控制器使用表单来处理数据。

我的问题是,表单的字段少于整个实体(id并且password_hash是很好的例子)。我得出的结论是,将整个实体发送给客户是个坏主意。相反,我希望 FOSRestBundle 仅发送表单中可用的实体字段。

所以我只是尝试:

FOSRestBundle 从服务器返回的 JSON 结构看起来很不错。但不幸的是,它不包含值。

当然,它没有 - 表单没有绑定。而此时绑定数据是没有意义的。因此,我需要找到另一种解决方案。

这个用例在我的应用程序中非常常见。所以我想知道是否没有简单/标准的方法来实现这一点。

(PS 我在前端使用 Angular JS。我只是将实体资源 JSON 附加到范围并使用 symfony 表单模板生成自动绑定到范围的正确对象的表单字段)

0 投票
1 回答
488 浏览

php - 动态添加字段到 CollectionType

我必须创建一个学校经理。当教师必须提交评估结果时,他必须通过评分来评估给定的技能。

Evaluation------OneToMany Scale-----------ManyToOne------Skill

评估类型

比例类型

我想动态添加ScaleType子元素以EvaluationType::scales形成给定Skills 集合的子元素。

到目前为止,这是我在控制器操作中尝试过的:

问题是我在渲染字段中只得到一个子表单scales,看起来当我添加一个子表单时$form['scales']会覆盖以前的孩子。

我想我完全错了。我怎样才能做到这一点?

我还指出了这样一个事实,即我无法创建第Evaluation一个,然后在另一个页面上创建所有Scales。它需要在同一个控制器/页面中完成。

编辑:我将添加一个事实,即我不希望 的子级scales可扩展,它们必须由服务器修复,而不是由客户端获取。

0 投票
0 回答
32 浏览

php - Symfony2表单获取值数组

我在尝试从表单中读取数据时遇到了一个小问题

#问题控制器.php#

当我标记“scolarisé”和“紧张”时,我得到了这个结果:

非常感谢您的帮助

编辑我的表单视图树枝:

0 投票
3 回答
1274 浏览

php - 从 EntityType 扩展 Doctrine2

我正在寻找一种扩展 Symfony 2 EntityType 的方法

就像在扩展此类型的新类型中一样,而不是创建FormTypeExtension- 我无法弄清楚。有谁知道这样做的正确方法?

我试过简单地扩展它:

然后在奏鸣曲管理课上我有:

但不幸的是它会导致致命错误:

可捕获的致命错误:传递给 Symfony\Bridge\Doctrine\Form\Type\DoctrineType::__construct() 的参数 1 必须实现接口 Doctrine\Common\Persistence\ManagerRegistry,没有给出,调用

我需要保留 的全部功能EntityType,但有一个例外 - 它的呈现方式。这就是为什么我需要扩展这个类型(我在其他领域使用它,所以我不能只为它修改模板!)。

我正在使用Symfony 2.8(仅作记录)。

0 投票
1 回答
753 浏览

php - Symfony 显示来自验证方法的表单错误

因为我习惯了 Laravel,所以我尝试在单独的方法中验证表单。但我不知道如何重定向回来并显示错误。主要问题是显示错误。最好的情况是我可以从验证方法中设置错误并让 Symfony 中的默认表单错误呈现接管。

我的方法可能完全错误,如果是这样,我希望有人能指导我朝着正确的方向前进。

我做了一个方法来创建表单并在树枝中呈现它

还有另一种验证表单并在错误时重定向回来的方法

0 投票
1 回答
660 浏览

forms - Symfony2:表单的视图数据应该是实体的一个实例,但是是数组

有两个操作(新建和编辑)使用相同的表单。表单应创建一个新实体 (MyBundle\Entity\Project) 或编辑现有实体。每个项目可以分配给一个团队(MyBundle\Entity\Team),一个团队可以持有多个项目。

实体/Project.php:

实体/团队.php:

控制器/ProjectController.php:

表单/ProjectType.php:

当我访问编辑表单时,下拉列表会正确显示分配的团队。但是当我尝试创建一个新项目时,它给了我以下错误消息:

表单的视图数据应该是 MyBundle\Entity\Project 类的一个实例,但它是一个 (n) 数组。您可以通过将“data_class”选项设置为 null 或添加将 a(n) 数组转换为 MyBundle\Entity\Project 实例的视图转换器来避免此错误。