1

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

$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' => 'My\Bundle\Entity\Image',));
    }

   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

4

1 回答 1

1

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

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

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

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

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

同样,我不确定这是否真的是最好的方法,但它目前对我有用,我不知道有任何其他方法......

于 2012-08-27T13:23:15.953 回答