我有一個(類別)許多(產品)關係的設置,並且我希望在編輯類別頁面底部顯示一個產品列表。Symfony/Sonata管理:編輯表單上的列表表單
看起來這將是一件常見的事情,但我還沒有找到任何方法來做到這一點(或它的任何例子)。我設法使用sonata_type_collection獲得產品的顯示,但是這給了我一個完整的產品編輯表單,當我真的想要一個與該類別關聯的產品列表時。
這裏有兩個問題,真的:
這可能嗎?
是否不鼓勵(這可以解釋缺乏例子)?如果是這樣,爲什麼?
我有一個(類別)許多(產品)關係的設置,並且我希望在編輯類別頁面底部顯示一個產品列表。Symfony/Sonata管理:編輯表單上的列表表單
看起來這將是一件常見的事情,但我還沒有找到任何方法來做到這一點(或它的任何例子)。我設法使用sonata_type_collection獲得產品的顯示,但是這給了我一個完整的產品編輯表單,當我真的想要一個與該類別關聯的產品列表時。
這裏有兩個問題,真的:
這可能嗎?
是否不鼓勵(這可以解釋缺乏例子)?如果是這樣,爲什麼?
做你在找什麼是壓倒編輯模板的最快方式。在您的管理serivce聲明你可以這樣做:
services:
sonata.admin.mail:
class: %sonata.admin.category.class%
tags:
- { name: sonata.admin, manager_type: orm, group: "Categories", label: "Category" }
arguments:
- ~
- %skooli.category.class%
- ~
calls:
- [ setTemplate, ["edit", "AcmeAdminBundle:CategoryAdmin:edit.html.twig"] ]
然後,AcmeBundle/Resources/views/CategoryAdmin/edit.html.twig
下,你可以有這樣的事情:
{% extends 'SonataAdminBundle:CRUD:base_edit.html.twig' %}
{# Override any block from the parent view if necessary #}
{% block products %}
<ul>
{% for product in object.products%}
<li>{{ product.name }}</li>
{% endfor %}
</ul>
{% endblock products %}
謝謝。這看起來非常接近我想要做的事情。我遇到的唯一問題是我目前有 ' - > add('product','sonata_type_collection',array( 'type_options'=> array( 'delete'=> false, 'read_only'= > true, 'btn_add'=> false, ) ))' 在我的CategoryAdmin.php configureFormFields函數中,儘管嘗試了幾個不同的變體,我找不到任何會導致它拉入新的自定義模板。 – MattBoutet
該模板與您的類別管理員相關,而不是您的產品管理員 – stevenll
該模板位於Resources/views/CategoryAdmin/edit.html.twig中,在我的services.yml中我有sonata.admin.category:.... 但在configureFormFields的CategoryAdmin.php中,我有添加()的鏈接調用,它決定了編輯表單中顯示的內容。如果我沒有擺在那裏與「產品」任何事情,形式呈現無我所期待的名單,而我所做的,包括一個附加的嘗試()的產品還沒有出來平移。 這是我第一次嘗試自定義模板,所以我可能會在這裏丟失一些基本的東西。 – MattBoutet
在你原來的問題你在談論編輯模板的類別。在您的評論中,您希望列表出現在顯示操作中。 後者很容易。只要你的關係添加到您的showFields行動,他們將被顯示:
use Sonata\AdminBundle\Show\ShowMapper;
class CategoryAdmin extends Admin
{
protected function configureShowFields(ShowMapper $showMapper)
{
$showMapper
->add('products')
;
}
}
如果你不喜歡,你可以創建自定義模板的外觀。這將工作的顯示和編輯: https://sonata-project.org/bundles/admin/master/doc/reference/action_show.html#setting-up-a-custom-show-template-very-useful
感謝您的回覆,並對不確切的措辭表示歉意。當我查看給定類別的編輯屏幕時(例如foobar.com/bundle/category/1234/edit),我正在查找的是相關產品的列表。 – MattBoutet
這聽起來很奇怪,因爲大多數時候你想內聯編輯子實體而不是隻顯示它們。但是,您可以使用自定義編輯模板。 – webDEVILopers
在線編輯子實體是一種可能性,但現在我只想對它們進行連貫的表示。默認顯示是與該類別關聯的所有產品的整個編輯窗體,而這絕對不是我正在尋找的。 我認爲覆蓋模板是我需要做的,但到目前爲止我還沒有能夠得到這個工作。這似乎很接近:http://php-jotter.blogspot.com.es/2013/01/override-display-of-sonatacollectiontyp.html,但它不工作,我不知道調整它。 – MattBoutet
那你正好與「有相關的產品清單」呢?這一般信息與您正在編輯的類別提交或輸入的表單無關嗎? – stevenll
該信息與提交表單無關,但我想提供直接鏈接到類別詳細信息頁面底部的相關產品。例如。如果該類別是iPhone,那麼我希望在頁面底部有一個iPhone產品列表。 – MattBoutet