ну у меня данные MIGX в таком виде
[{"MIGX_id":"1","art":"m","size":"91\/47 \u0441\u043c","price":"1900"},{"MIGX_id":"2","art":"x","size":"121\/63 \u0441\u043c","price":"2300"},{"MIGX_id":"3","art":"xl","size":"153\/80 \u0441\u043c","price":"2900"}]
Собственно второй раз не нужно как у вас для views.
Второй момент
'price'=>$r['price']?$r['price']:$l['sm_price'],
немного не понял смысл этого выражения
Третий момент
public function afterIteration(array $list){ $list = parent::afterIteration($list); foreach($list as & $l){ if($list=json_decode($l['tvs']['options']['value'],1)){ $options=[]; foreach($list as $r){ $o=[ 'art'=>$r['art'], 'price'=>$r['price']?$r['price']:$l['sm_price'], 'size'=>$r['size'], ]; $options[]=$o; } $l['options']=$options; } } return $list; }
вывел у себя вот так, на выходе получил только массив MIGX, а остальное куда пропало. Туплю чего то