2014-12-14 6 views
0

Я пытаюсь добавить массив из нескольких vals в сеанс var bu, отправляющий запрос ajax. Я делаю это:Добавить массив в сеанс Symfony2

public function addFoodAction(Request $request) 
{ 
    $foodId = json_decode($request->getContent(), true)['food']; 
    $food = $this->getDoctrine()->getRepository('HackatonDinningRoomBundle:Food')->find($foodId); 
    $arr = array(); 
    $arr[]=$food; 
    $session = $this->get('session'); 
    $session->set('items', array($food)); 

    return new Response(count($arr)); 
} 

Как я могу это сделать?

+0

я вижу некоторые проблемы с вашим кодом, но то, что вы ожидаете и что вы на самом деле получаете? –

ответ

3

Использование serialize:

$session->set('items', serialize(array($food))); 

Чтобы получить данные:

unserialize($session->get('items')); 
+2

В дополнение к тому, что сказал @Gnucki, я бы рекомендовал использовать что-то другое, кроме сериализатора по умолчанию в php. Такие вещи, как круговые ссылки, могут привести к сбою вашей программы. Я бы рекомендовал jms/serializer (но также работает symfony/serializer). – echochamber

+0

echochamber прав, вы должны взглянуть на [JMSSerializer] (http://jmsyst.com/libs/serializer), если сериализованный объект немного сложнее. – Gnucki

Смежные вопросы