gpt4 book ai didi

php - 从供应商类生成 Symfony2 表单

转载 作者:搜寻专家 更新时间:2023-10-31 21:38:17 26 4
gpt4 key购买 nike

使用 Symfony2 并尝试弄清楚如何最好地合并 Vendor 库。使用路由配置调用供应商库方法非常容易:使用适当的命名空间,生成类名、要调用的方法以及一对路径组件的参数和查询变量,瞧,即时集成。

不过,我在处理表格时遇到了问题。我的目标看起来应该很容易。我想从供应商类在 Symfony2 中制作表格。作为一个具体的例子,考虑 google-api-php-client .看起来 ->createForm() 效果最好,因为它很好地连接了 ORM 和验证。但是,它依赖于 MyBundle\Form\ThingType 文件和类。要创建此类,我的包中需要一个实体。我不能(或无法弄清楚如何)只使用供应商库中的现有“实体”。当 API 术语中已经存在“模型”时,在 Symfony 命名法中创建“实体”似乎是不灵活的,而且非常不合时宜。

我开始工作的另一种方法是使用

$formBuilder = $this->createFormBuilder(new GoogleApi\Contrib\Event);

然后

foreach(get_object_vars($event) as $prop) { $formBuilder->add($prop); }

但这并没有利用 API 文档和内置验证工具之间看似现成的桥梁,这也意味着每个单独的数据类型都必须声明为单独的或数组,以决定是否包含一个基于类的表单的集合或单个基于类的表单。

简而言之,我想使用 API 中可用的属性和数据类型信息,并且,如果需要,the Resource representations like this one创建一个简单的函数(比如我的调用函数)来为 Google API 中的类创建嵌套的、 self 验证的表单。我想在不创建一堆“实体”和“表单类型”的情况下完成此操作,这些“实体”和“表单类型”只是重写库中已经编写的内容。

最佳答案

供应商库没有任何安装细节吗?您通常应该使用 $this->get('vendor.name.form_object') 之类的服务调用从 Controller 调用供应商事物,而不是在服务中调用类,这将包括任何所需的依赖项。

此外,您将在包中创建的实体将只是扩展其预制抽象类的基本实体。例如(取自 https://github.com/FriendsOfSymfony/FOSUserBundle )

<?php
// src/Acme/UserBundle/Entity/User.php

namespace Acme\UserBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

public function __construct()
{
parent::__construct();
// your own logic
}
}

如果您想添加任何您自己的实体项目,那么您可以在此处执行此操作,但仍然保留基础实体/模型的方法和属性。

关于php - 从供应商类生成 Symfony2 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com