Что бы не выглядеть лентяем, я приведу костыль который сейчас использую:
Модель:Код:
<?php defined('SYSPATH') or die('No direct script access.');
class Model_Menus {
public function setMenu($array,$alias,$type){
$data['alias']=$alias; $data['type']=$type;
foreach($array as $key=>$value){
if(isset($value['check'])){
$data['position']=$key; $data['value']=$value['value'];
$menus = ORM::factory('Menu')
->where('alias','=',$data['alias'])
//->and_where('type','=',$data['type'])
->and_where('position','=',$data['position'])
->find()
;
$menus->values($data); $menus->save();
}
}
}
public function getMenu($alias,$type){
$menu=array();
$arrays = ORM::factory('Menu')->where('alias','=',$alias)->find_all()->as_array();
foreach($arrays as $array){
$menuData=$array->as_array();
$menu[$menuData['position']]=$menuData['value'];
}
return $menu;
}
}
Контроллер:Код:
$menus = ORM::factory('Menu')->order_by('value','ASC');
$topmenus = $menus->where('position','=','top')->find_all()->as_array();
$topmenu=array();
foreach($topmenus as $k=>$v){
$topmenu[$k]['position'] = $v->value;
$topmenu[$k]['name'] = ORM::factory('Page')->where('alias','=',$v->alias)->find()->name;//
if($k==0){
$topmenu[$k]['url'] = '/';
$this->homepage = ORM::factory('Page')->where('alias','=',$v->alias)->find()->as_array();
}else{$topmenu[$k]['url'] = '/'.$v->type.'/'.$v->alias;}
}
$this->template->topmenus = $topmenu;
Работает, но что то душа не на месте...