W sieci znalazłem klasę, która generuje drzewko z kategorii - w pakiecie z tą klasą była klasa, która wyświetla listę w postaci elementów UL, LI. Przerobiłem nieco pod swoje potrzeby i zrobiłem z tego listę select. Mój problem polega na tym, że chciałbym przechwycić te wyniki w postaci "return" - natomiast to działa tylko jeśli w dekonstruktorze jest "echo" - więc wywołanie samego budowania drzewka wygląda następująco:
foreach ($it as $k => $v) {}
Właściwie nie trzeba nic więcej robić - samo się wyrenderuje - dodam, że:
- $k - zwróci ID kategorii
- $v - zwróci obiekt NODE (z innej klasy)
Sama klasa, która renderuje widok wygląda tak:
class JTree_JTreeRecursiveSelectIterator extends RecursiveIteratorIterator { /** * @var _jTree the JTree object */ private $_jTree; /** * @var _str */ private $_str; /** * @var array */ private $params; /** * JTreeRecursiveIterator::__construct() * * @param mixed $jt - the tree object * @param mixed $iterator - the tree iterator * @param mixed $mode * @param integer $flags * @return */ parent::__construct($iterator, $mode, $flags); $this->_jTree = $jt; $this->params = $params; } /** * JTreeRecursiveIterator::endChildren() * Called when end recursing one level.(See manual) * @return void */ public function endChildren() { parent::endChildren(); } /** * JTreeRecursiveIterator::callHasChildren() * Called for each element to test whether it has children. (See Manual) * * @return mixed */ public function callHasChildren() { $ret = parent::callHasChildren(); $value = $this->current()->getValue(); { $selected = ($this->current()->getUid() == Arr::get($this->params, 'selected_id')) ? ' selected="selected"' : NULL; $this->_str[] = '<option value="'. $this->current()->getUid() .'"'. $selected .'>'. $value .'</option>' . PHP_EOL; } return $ret; } /** * JTreeRecursiveIterator::__destruct() * On destruction end the list and display. * @return void */ public function __destruct() { } }
Próbowałem już dekonstruktor zmodyfikować tak aby zamiast "echo" był "return" - jednak to nie pomaga - nic nie zwraca (zmienne $k, $v z pętli wyżej - dalej zwracają "swoje")
Ma ktoś pomysł, aby to obsłużyć?