繁体   English   中英

在Symfony2中将实体字段类型显示为每个实体的某些属性的表

[英]Displaying an entity field type as table of some properties of each entity in Symfony2

我需要两个实体之间的单向一对多关系。
为了让用户选择关系,我使用实体字段类型:

$builder->add('selectedItems','entity',array(
                'class'=>'MY\ExBundle\Entity\MyRow',
                'multiple'=>true,
                'expanded'=>true,
            )
        )

但是,对于每个实体,我只有一个checkbox及其标签。
我需要将每个实体显示为一个表行,除了checkbox之外,它的列是基础实体的某些属性(例如,价格,数量等),以便用户可以查看有关实体的更多详细信息并根据需要检查它们。
例如:

+---+-------+--------+--------------+
|   | price |  count | deliveryDate |
+---+-------+--------+--------------+
| X |  100  |    6   | 2015-01-02   |
+---+-------+--------+--------------+
|   |   70  |    5   | 2015-02-03   |
+---+-------+--------+--------------+

我怎样才能做到这一点?

我应该创建一个新的字段类型吗? 如果可以,我如何访问基础子实体?

还是我需要使用嵌入表单集合之类的东西? 如果是这样,如何使symfony威胁它作为选择列表,而不是新添加的条目。


编辑:这是MY\\ExBundle\\Entity\\MyRow实体:

/**
 * MyRow
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="ITW\BidBundle\Entity\MyRowRepository")
 */
class MyRow
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\Column(name="count", type="integer")
     */
    private $count;

    /**
     * @var integer
     *
     * @ORM\Column(name="price", type="integer")
     */
    private $price;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="deliveryDate", type="date")
     */
    private $deliveryDate;

    /**
     * @var string
     *
     * @ORM\Column(name="description", type="string", length=255,nullable=true)
     */
    private $description;

}

Edit2:我试图为此创建一个字段类型,这是我使用的模板:

{%- block tablechoice_widget -%}
    <table {{ block('widget_container_attributes') }}>
        <thead>
            <th></th>
            <th>price</th>
            <th>count</th>
        </thead>
        <tbody>
    {%- for child in form %}
        <tr>
            <td>{{- form_widget(child) -}}</td>
            <td></td>
            <td></td>
        </tr>
    {% endfor -%}
        </tbody>
    </table>
{%- endblock tablechoice_widget -%}

但是我无法访问子级( checkboxes )的基础实体( MyRow )。

在树枝中,如果您使用该表示法(例如)

{{ entity.child }} 

但是entity是您表单的一个字段,您将不能访问实际的实体对象,而可以访问它的表单表示形式(因此,复选框或其他方式)

如果要访问“真实”对象(及其子对象),则应使用

{{ entity.vars.data }}

为了孩子

{{ entity.vars.getChild }}

当然,您必须根据实际代码修改名称。
祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM