Symfony2从不同的field_row获取分支模板中的实体id



以下是用于创建表单的代码:

$form = $this->createFormBuilder($city)
            ->add('name', 'text')
            ->add('images', 'collection', array('type' => new ImageType())
            ->getForm();

城市images属性,是Image实体的集合。

这里是ImageType 的定义

class ImageType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('path', new ImageFieldType());
    }
    public function setDefaultOptions(OptionsResolverInterface $resolver) {
        $resolver->setDefaults(array('data_class' => 'MyBundleEntityImage',));
    }
   public function getName() {
        return 'image';
    }
}

这里是我的自定义字段类型ImageFieldType:的代码

class ImageFieldType extends AbstractType {
    public function getDefaultOptions(array $options) {
        return array('path' => null);
    }
    public function getParent() {
        return 'field';
    }
    public function getName() {
        return 'imageField';
    }
}

为了渲染ImageFieldType,我使用以下块:

{% block imageField_widget %}
    {% if form.vars.value is not null %}
        <a href="{{ path('_cityManage') }}/CityID/ImageID">
        <img class="image_type" src="{{ asset('uploads/documents/' ~ form.vars.value) }}" />
        </a>
    {% endif %}
{% endblock %}

如何获取此分支块中的city.id和当前image.id?我试过使用{{ id }},但这次打印的有点像form_image_0_path

我的目标是有一个链接到页面path('_cityManage')/city.id/image.id

在这种情况下我该怎么做(我不确定这是否是最好的方法,但它有效):

在您的情况下,在控制器中,我会在调用呈现函数时传递您需要的变量:

return $this->render('view', array(
    'form' => $form->createView(),
    'city' => $currentCity,
    'image' => $currentImage
);

您现在可以在模板中使用这些变量:

{{ city.id }}
{{ image.id }}

同样,我不确定这是否真的是最好的方法,但目前它对我有效,我不知道还有其他方法。。。

最新更新