[英]Can I populate a Sonata entity export using only getters?
我正在為一家使用 Sonata 的媒體公司構建一個非常簡單的計費系統,其中包括用於支付記者的支付實體。 付款的唯一目的是導出到電子表格。 我們永遠不會直接編輯付款。
我的付款實體中有一堆特殊的吸氣劑,它們不直接對應於該實體的屬性。 像這樣的東西:
public function getReporterName():string
{
return
$this->reporter->getUser()->getFirstname() .
' ' .
$this->reporter->getUser()->getLastname()
;
}
在我的奏鳴曲管理員 class 中,我已經告訴我的列表視圖顯示reporterName
就好像它是一個屬性。 Sonata 足夠聰明,可以找到並使用 getter 來檢索我正在尋找的字符串。 沒問題。
當我將該偽字段名稱添加到 configureDatagridFilters() 方法時,問題就出現了,如下所示:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('id')
->add('paymentComplete')
->add('reporterName')
;
}
現在我在嘗試導出電子表格時收到一條討厭的消息,說:
找不到屬性
AppBundle\Entity\Payment::$reporterName
的元數據。 請確保您的 Doctrine 映射配置正確。
有沒有辦法做我在這里想做的事情? 還是我只需要把它吸起來並在數據庫中復制一些數據才能使我的導出工作?
如果有幫助,我將在這里重申,我們只需要此實體來導出到電子表格。 它永遠不會被手動編輯。
我認為您被困在使用兩個字段(除非您為全名添加映射字段)。
您可以使用點語法按子實體屬性進行過濾:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('id')
->add('paymentComplete')
->add('reporter.user.firstname', null, ['label' => 'Reporter Firstname'])
->add('reporter.user.lastname', null, ['label' => 'Reporter Lastname'])
;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.