[英]Render custom entity type field in form (Symfony)
我在嘗試自定義表單中特定字段的呈現時陷入困境。 看起來像這樣:
$builder->add('players', 'entity', array(
'class' => 'Acme\Bundle\Entity\Player',
'expanded' => true,
'multiple' => true,
'required' => false,
));
表單本身是通過簡單的方式呈現的:
{% block form_content %}
{% form_theme form 'AcmeBundle:Form:fields_child.html.twig' %}
{{ form_widget(form) }}
{% endblock %}
現在在fields_child.html.twig中,我從另一個表單模板擴展,但是那里沒有什么特別的。 我的HTML看起來像這樣:
玩家:-[復選框輸入] 1
其中1等於數據庫中唯一玩家的ID。 但是,不是渲染ID,而是嘗試在復選框后渲染其圖片和全名。 我嘗試過多種形式化主題的組合來覆蓋它,但每次都失敗。 有人可以在樹枝上貼上我想要的東西嗎?
謝謝
您必須為其創建自定義表單字段類型以及自定義窗口小部件模板。
http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html
最近,我遇到了這個問題(情況略有不同。我需要將產品顯示為帶有復選框的表。),Form的子數據始終返回空值,這就是我最終使用此(dirty :)的解決方案的原因:
控制器動作:
...
$productRepository = $entityManager->getRepository('VendorMyBundle:Product');
$products = [];
$formChildren = $productListForm->createView()->children;
foreach ($formChildren['products'] as $formProduct) {
$formProductId = $formProduct->vars['value'];
$productEntity = $productRepository->find($formProductId);
$products[$formProductId] = $productEntity;
}
...
return $this->render('TEMPLATE', [
'productListForm' => $productListForm->createView(),
'products' => $products,
]);
模板:
...
{% for productForm in productListForm.products %}
{% set id = productForm.vars.value %}
<tr>
<td class="check">
{{ form_widget(productForm) }}
</td>
<td class="photo">
{% if products[id].getImages().isEmpty() == false %}
{% set productImage = products[id].getImages().first() %}
<img src="{{ productImage.getWebPath() | imagine_filter('st_product_cabinet_thumbnail') }}" />
{% else %}
<span class="no-image">No image</span>
{% endif %}
</td>
<td class="title">
<a href="{{ path('ROUT', {'productSlug':products[id].getSlug()}) }}" target="_blank">{{ products[id].getName() }}</a>
</td>
<td class="status">
{{ products[id].getStatusName(products[id].getStatus()) }}
</td>
<td class="price">
<ul>
{% for productPrice in products[id].getPrices() %}
<li>{{ productPrice.getValue() ~ ' ' ~ productPrice.getCurrencyCode() }}</li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.