2012-08-26 82 views
1

下面是用於創建窗體的代碼:Symfony2中得到實體ID在樹枝模板從不同field_row

$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

回答

1

我做這樣的情況下(我不知道這是否是做的最好的方式,但它的工作原理):

在你的情況下,在控制器我會通過調用渲染功能,當你需要的變量:

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

現在,您可以在模板中使用這些變量:

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

再一次,我不確定這是否是最好的方法,但目前它適用於我,我不知道任何其他方法...

相關問題