+ Antworten
Ergebnis 1 bis 7 von 7

Thema: [fluid/extbase] realisierung von for-schleifen mit fluid

  1. #1
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346

    [fluid/extbase] realisierung von for-schleifen mit fluid

    moin moin!

    im repository ist eine ext mit dem namen blog_example (leider ohne autorenangabe) erschienen. erfreulicherweise ist sie schon um einiges umfangreicher als zb. der workshop von patrick lobacher in der t3n.
    so nach und nach erschliessen sich auch struktur und gedanken, die dem mvc zugrunde liegen, bzw. wo es mit t3 auf flow3 in kombination mit fluid und extbase hingehen wird.
    doch leider habe ich bei allen podcasts und workshops noch nie eine for-schleife gesehen. hab ich die nur uebersehen?!

    das bsp. blog zeigt eigentlich in meinen augen die noch recht deutlichen defizite in der doku. so wird zb. im be die anzahl der anzuzeigenden datensaetze per default auf 10 begrenzt. dieser wert taucht jedoch nirgendwo im eigentlichen code auf. so weiss ich also auch nicht, wie fluid darauf reagieren soll. wenn der zugriff auf diesen wert realisierbar ist (wofuer ich noch kein bsp. gesehen habe), dann stellt sich sofort die frage: wie verarbeit ich ihn weiter? ohne eine for-schleife werde ich kein paging aufbauen koennen (wenn sowas nicht schon standardmaessig "unter der haube" steckt).

    sollte es also weitere neugierige geben, die das ein oder andere problem bereits geloest haben sollten, so wuerde ich mich ueber eine reaktion freuen.


    gruss,
    theo
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  2. #2
    TP-Senior Tetsuo ist auf einem guten Weg Avatar von Tetsuo
    Registriert seit
    Apr 2004
    Ort
    Hockenheim
    Beiträge
    185
    Ich bin mir nicht so ganz sicher was du meinst?

    Wenn ein HotelRepository dir mehrere Hotels zurückgibt - es soll ja angeblich mehr als ein Hotel geben dann kannst du sie so alle ausgeben.
    HTML-Code:
    <f:for each="{hotels}" as="hotel">
    	<p>{hotel.name}</p>
    </f:for>

  3. #3
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346
    ok ... dann in php
    PHP-Code:
    <for $x=0$x<10$x++>
    // zb. name eines hotel 
    </for> 
    eine ganz einfache zaehlschleife also. um dann eben sagen zu koennen: zeige mir 10 datensaetze pro seite an. danach muss man eben weiterblaettern. mit anderen worten etwas, was heutzutage jede liste hat.
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  4. #4
    TP-Junior Vannen macht alles soweit korrekt
    Registriert seit
    Mar 2010
    Beiträge
    17
    Hallo,

    ich denke die sauberste Lösung wäre wenn du das Ganze per Controller/Repository machst, so dass du nur 10 Hotels an Fluid übergibst.

    Wenn du aber eine for Schleife machen möchtest, dann musst du wohl einen eigenen ViewHelper schreiben.
    Ich habe mal einen gebaut, weil ich immer 6 Spalten anzeigen wollte egal wie viele Einträge mein Array hat.
    Meiner sieht so aus:

    PHP-Code:
    <?php

    class Tx_DEINEXTNAME_ViewHelpers_ForViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
        
        
    /**
        * @param integer $start 
        * @param integer $until 
        * @param string $as
        * @param array $array
        * @param string $arrayValue
        * 
        * @return string
        */
        
    public function render($start,$until,$as null,$array null,$arrayValue null) {
            
    $returnValue '';
            if (
    is_object($array)) {
                if (!
    $array instanceof Traversable) {
                    throw new 
    Tx_Fluid_Core_ViewHelper_Exception('ForViewHelper only supports arrays and objects implementing Traversable interface' 1248728393);
                }
                
    $array $this->convertToArray($array);
            }        
            for(
    $i = (int)$start;$i<(int)$until;$i++) {
                if(
    $array !== null && $arrayValue !== null && count($array) > $i
                    
    $this->templateVariableContainer->add($arrayValue$array[$i]);
                elseif(
    $arrayValue !== null)
                    
    $this->templateVariableContainer->add($arrayValuenull);
                if(
    $as !== null)
                    
    $this->templateVariableContainer->add($as$i);
                
                
    $returnValue .= $this->renderChildren();
                
                if(
    $arrayValue !== null)
                    
    $this->templateVariableContainer->remove($arrayValue);
                if(
    $as !== null)                
                    
    $this->templateVariableContainer->remove($as);
            }        
            return 
    $returnValue;
        }
        
        
         
    /**
         * copied from class Tx_Fluid_ViewHelpers_ForViewHelper
         * 
         * Turns the given object into an array.
         * The object has to implement the Traversable interface
         *
         * @param Traversable $object The object to be turned into an array. If the object implements Iterator the key will be preserved.
         * @return array The resulting array
         * @author Bastian Waidelich <bastian@typo3.org>
         */
        
    protected function convertToArray(Traversable $object) {
            
    $array = array();
            foreach (
    $object as $keyValue => $singleElement) {
                
    //$array[$keyValue] = $singleElement;
                
    $array[] = $singleElement;
            }
            return 
    $array;
        }

    }
    Aufgerufen wird er so:

    HTML-Code:
    {namespace tx = Tx_DEINEXTNAME_ViewHelpers}
    <tx:for start="0" until="10" array="{hotels}" arrayValue="hotel">
    {hotel.name}<br />
    </tx:for>

  5. #5
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346
    hi vannen,

    das sieht schon verdammt gut und nach dem aus, was ich gesucht habe.
    ich hab den code noch nicht getestet, werde es aber heute oder in den naechsten tagen tun. wenn das alles so funzt, wie du das geschrieben hast, dann bekommt fluid von mir noch einen weiteren sympathiepunkt fuer hohe flexibilitaet.


    gruss
    theo
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  6. #6
    TP-Member superjens macht alles soweit korrekt
    Registriert seit
    Mar 2009
    Ort
    NRW
    Beiträge
    31
    Danke, Vannen, Dein Beispiel hat mir weiter geholfen in diesem TypoFluidExtBaseHelperDickicht

  7. #7
    TP-Senior pidd macht alles soweit korrekt
    Registriert seit
    Sep 2010
    Beiträge
    140
    was dir auch helfen kann:

    http://www.amazon.de/Zukunftssichere.../dp/3897219654

    zugegeben nicht gerade günstig aber wenn man sich intensiver mit der thematik beschäftigen möchte is dieses buch echt empfehlenswert!

+ Antworten

Ähnliche Themen

  1. Fixed-, Fluid- oder Elastische-Layout?
    Von koenixblau im Forum Webdesign allgemein
    Antworten: 10
    Letzter Beitrag: 09.06.2009, 20:10
  2. Vinten Fluid 12 Stativkopf
    Von Frank-AD im Forum Video & Fotografie
    Antworten: 0
    Letzter Beitrag: 02.05.2009, 14:49
  3. Realisierung eines kostenpflichtigen Downloadbereichs
    Von Deacon Frost im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 28.04.2004, 00:06
  4. realisierung private arbeitsvermittlung
    Von Pidelmaniax im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 06.04.2004, 07:58

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51