2012-05-24 1 views
1

Я хочу добавить product variations в таблицу просмотра продукта, в которой используется Zend_Paginator.Manipulate Zend_Paginator Data

С помощью этого кода я получаю свои продукты.

$select = $productModel->select() ... (so on) 

С помощью этого кода я создаю Paginator

$adapter = new Zend_Paginator_Adapter_DbSelect($select); 
$paginator = new Zend_Paginator($adapter); 

И теперь я пытаюсь добавить product_variations к данным продукта. Я пытался сделать это:

foreach($paginator as $key => $product) { 

    // get variations 
    $variations = $productModel->getProductVariants($product['ID']); 
    // overwrite $product add variations 
    $product['Variations'] = $variations; 
    $paginator->$key = $product; 

} 

Но на мой взгляд контроллеру product_data будет показано только. Массив (Variations) отсутствует.

Как я могу справиться с этим?

ТИА FRGTV10

ответ

2

Смотреть это: Adding items to a paginator already created.

foreach($paginator as $key => &$product) { 
    // get variations 
    $variations = $productModel->getProductVariants($product['ID']); 
    // overwrite $product add variations 
    $product['Variations'] = $variations; 
} 
unset($product); 

Обратите внимание на & в foreach() - проход по ссылке. Затем вы меняете ссылочный номер $product и не нуждаетесь в том, чтобы что-то возвращать $paginator.

+1

Чтобы сделать его более похожим на Zend, создайте свой собственный адаптер и расширьте метод getItems() - как описано здесь: http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator .usage.dbselect и ответил здесь: http://stackoverflow.com/questions/4146158/zend-paginator-return-as-objects (отличный, простой пример), и это очень просто. – jkulak