2014-09-16 1 views
4

Я новичок в комплекте с sonata admin. Теперь я пытаюсь экспортировать файл csv с чем-то вроде: «customer.phone», «order.total» ... но когда я открыл файл csv, в поле «order.total» всего лишь «99 .99», Я бы хотел, чтобы он экспортировался как «AUD $ 99,99», кто-нибудь знает, как я могу это достичь? Спасибо большое! Код здесь:Настроить экспортированный CSV-контент в комплекте для администрирования Sonata

public function getExportFields() { 
    return array('id','customer.First_name','customer.Last_name', 
     'customer.contact','total_amount' 
     ); 
} 

ответ

11

Вам нужно определить метод getTotalAmountFormated в вашем Order классе, и сделать его вернуть строку, что вам нужно. Затем добавьте totalAmountFormated (или total_amount_formated, я думаю, что оба должны работать) в массиве вернулся из getExportFields

public function getExportFields() { 
    return array('id','customer.First_name','customer.Last_name', 
     'customer.contact','totalAmountFormated' 
     ); 
} 
+0

ТНХ за ответ @tiriana. Это верно, но я обнаружил, что я не уверен, как получить значение «total_amount» из этого формата, другими словами, я не уверен, как получить объект order и получить order.getTotal() для хранения значение, я пробовал this-> getSubject(), что-то вроде этого, но возвращать исключение ни одной ошибки объекта. – GaryZ

+0

Взгляните на мое обновление. Вы не можете использовать getSubject в exportAction, потому что он не работает в одном экземпляре, а в списке - в коллекции. Таким образом, getSubject возвращает null в экспорте. При этом вы должны сообщить администратору, какое свойство он должен искать, итерируя эту коллекцию. И если вы не являетесь falimiar с property_path, я предлагаю вам ознакомиться с компонентом PropertyAces http://symfony.com/doc/current/components/property_access/introduction.html#usage – tiriana

+0

Получил то, что вы имеете в виду. Спасибо. – GaryZ

2

Просто добавить, вы можете настроить заголовок каждого столбца, как такой:

public function getExportFields() { 
    return array(
     'Id' => 'id', 
     'Customer First Name' => 'customer.First_name', 
     'Customer Last Name' => 'customer.Last_name', 
     'Customer Contact' => 'customer.contact', 
     'Total Amount' => 'totalAmountFormated' 
    ); 
} 
Смежные вопросы