CMenu & superfish

Seguendo quanto descritto nella documentazione (http://www.yiiframework.com/doc/cookbook/61/) sto cercando di creare un menu dinamico che preleva i dati dal dbase.

Nell’esempio i dati vengono estrapolati direttamente dalla tabella ‘Hierarchy’ ma visto che ho l’esigenza di avere dei link piu’ seo li prendo da una seconda tabella che contiene il contenuto delle pagine ‘Page’.

Nella tabella ‘Page’ ho il link della pagina ma non riesco a prelevare il contenuto.

Ho creato la relazione nel modello Page.php:

public function relations()

{


	return array(


			'menu'=>array(self::BELONGS_TO, 'Menutree', 'menuID','alias'=>'menu'),


	);

}

Nel layout main.php prelevo i dati (Relazione ->menu):

$model = Page::model()->with(array(‘menu’))->findByPk(1);

La funzione getListed viene richiamata dal modello Page.php:

public function getListed() {

$subitems = array();


if($this->menu[childs]) foreach($this->menu[childs] as $child) {


  $subitems[] = $child->getListed(); <---- Va a Hierarchy model


}


if($this->url =='home') $this->url=Yii::app()->baseUrl;


$returnarray = array('label' => $this->title, 'url' => $this->url);


if($subitems != array()) $returnarray = array_merge($returnarray, array('items' => $subitems));


return $returnarray;

}

A questo punto sorge il problema, quando vengono trovati dei sottomenu viene richiamata la funzione dal modello Hierarchy e non riesco ad estrapolare il link contenuto nella tabella Page.

Spero di essere stato chiaro…

ciao,

non so se ho capito bene il problema perché ho letto un po’ di corsa… ma forse al posto di fare il foreach su $this->menu dovresti farlo solo su $this e leggere poi $this->menu da dentro la getListed…

Giovanni.

Grazie di aver risposto,

ad ogni modo mettendo $this il foreach non puo’ funzionare poiche’ la funzione getListed non riesce a trovare l’oggetto child.

Non riesco ad uscirne…

L’idea insomma e’ questa:

Tabella Page:

id,

menuID, <---- Relazione con tabella Menutree HAS_MANY (‘Pages’)

body,

url <-------- L’url della Pagina

Tabella Menutree:

id, <---- Relazione con tabella Page BELONGS_TO with(‘menu’)

title,

sort,

parent

Per semplificare l’intento e’ quello di visualizzare il menu andando a richiamare l’url della pagina e visualizzarlo. Probabilmente e’ la relazione tra le tabelle che non soddisfa tutti i requisiti.

Si accettano consigli…