Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OPT 1.1.5] Jakie interfejsy dla obiektu aby mógł być iterowany w section jak array?
tornax
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 11.10.2006

Ostrzeżenie: (0%)
-----


Mam problem z iterowaniem w OPT 1.1.5 obiektów które mają się zachowywać jak tablice (array).

(Narazie nie zamiejszczam wszystkich definicji klas ponieważ to zazwyczaj odstrasza od dalszego czytania)

Mam klasę która ma taki oto nagłówek
  1. class ormcollection implements SeekableIterator, ArrayAccess, Countable

oraz kawałek kodu który zwraca obiekt tej klasy (linijka 1.) oraz ładuje do odpowiedniej sekcji w templatce (linijka 2.)
  1. $data = configurator::finder()->getAll();
  2. $this->view->assign('configurator', $data);

obiekt $data (klasa ormcollection) przechowywuje w prywatnej tablicy obiekty klasy configurator, które odzwierciedlają poszczególne rekordy w bazie danych
  1. class configurator extends orm {
  2.  
  3. public $name;
  4. public $active = 0;
  5.  
  6. public function __construct(){
  7. parent::__construct('configurator');
  8. }
  9.  
  10. public static function finder($className=__CLASS__){
  11. return parent::finder($className);
  12. }
  13. }

Teraz templatka wygląda do tego banalnie
  1. {section=configurator}
  2. {$configurator.name}
  3. {/section}

... ale nic nie generuje ... więc dla sprawdzenia czy działa iteracja i są pobierane dane wrzuciłem pare linijek do testu
  1. $data = configurator::finder()->getAll();
  2.  
  3. var_dump('foreach');
  4. foreach($data as $r){
  5. var_dump($r['name'], $r->name);
  6. }
  7.  
  8. var_dump('for');
  9. for($i=0; $i < count($data); $i++){
  10. var_dump($data[$i]['name'], $data[$i]->name);
  11. }
  12.  
  13. $this->view->assign('configurator', $data);

z wynikiem
  1. string(7) "foreach"
  2. string(10) "Deskorolki"
  3. string(10) "Deskorolki"
  4. string(12) "Poduszkowiec"
  5. string(12) "Poduszkowiec"
  6. string(3) "for"
  7. string(10) "Deskorolki"
  8. string(10) "Deskorolki"
  9. string(12) "Poduszkowiec"
  10. string(12) "Poduszkowiec"

Iteracja działa i zwraca wyniki ale nie w OPT, aby upewnić się, że samo OPT działa wykonałem taki test
  1. $this->view->assign('configurator', array(array('name'=>'pies'), array('name'=>'kot')));

rezultat
  1. pieskot

Test co prawda na tablicach ale przynjmniej wiem, że przekazuje zmienne. Moje podejżenie jest takie, że w ormcollection brakuje jakiegoś dodatkowego interfejsu ale nie potrafię powiedzieć jakiego bo ze wszystkimi obecnymi pętle for i foreach działąją bez problemu.

Czy ktoś ma może jakiś pomysł ?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 22:01