turk porno porno escort rokettube
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 20 von 39

Thema: Controller mit RETURN anstatt HTML-Ausgabe, aber wie?

  1. #1
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Ungl?cklich Controller mit RETURN anstatt HTML-Ausgabe, aber wie?

    Hallo zusammen.

    Folgendes Szenario:
    Ich möchte innerhalb der index.php (bootstrap) ganz normal einen Controller ausführen.
    Der Controller soll allerdings keinen String/HTML ausgeben, es soll NUR ein Rückgabewert der Controller-Methode zurückgegeben werden, so dass ich diesen weiterverarbeiten kann.

    PHP-Code:
    class IndexController extends Zend_Controller_Action
    {
        public function 
    indexAction()
        {
            
    $arr = array('eins''zwei''drei');
            return 
    $arr;
        }

    Vielleicht so in der Art

    PHP-Code:
    $dir '../application/controllers';
    $controller Zend_Controller_Front::getInstance();
    $controller->setControllerDirectory($dir);
    $controller->throwExceptions(true);
    $controller->dispatch();
    // Hier hätte ich nun gerne Zugiff auf 
    // den Rueckgabewert der Controllermethode
    // z.B.:
    var_dump$controller->GET_RETURN() ); 

    Ich habe alles mögliche ausprobiert, aber irgendwie renderd der Controller immer direkt und ich bekomme nur einen Ausgabestring. Ich will aber den wirklichen Rückgabewert (in diesem Fall das Array) zurückbekommen. Letztlich das MVC-Konzept ohne Views

    (Hintergrund ist, dass die Ausgabe nicht in HTML sondern in Flex/Flash dargestellt werden soll).

    Hat da jemand ne Idee?
    Geändert von simonwidjaja (11.06.2007 um 05:30 Uhr)

  2. #2
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Wie wäre es, wenn du den viewRenderer deaktivieren würdest:

    PHP-Code:
    // Front ist eine Instanz von Zend_Controller_Front
    $front->setParam('noViewRenderer'true); 
    Welches Format verlangt Flex/Flash denn überhaupt? Ich würde es nämlich direkt im richtigen Format in das Response-Objekt schreiben. Falls du native PHP-Arrays brauchst, empfehle ich dir, das Array zu serialisieren.

  3. #3
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    das Rendern zu unterbinden habe ich bereits geschafft.

    nur ich finde keine Zugriffsmöglichkeit auf den Rückgabewert. Das Serializing kommt eigentlich nicht in Frage, das wäre ja extrem unsexy. Ich brauche nämlich auf alle Fälle den nativen Datentyp. Müsste also erst serializen und dann wieder deserializen. Das wäre sehr unperformant.

    Es muss doch ne Möglichkeit geben, über den normalen Bootstrap-Weg auf den Rückgabewert zugreifen zu können, ohne dass ich die Controller-Klasse manuell instanziere. Denn dann funkionieren wahrscheinlich einige Features des Frameworks nicht mehr (Rollenverwaltung etc.)

  4. #4
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Was hältst du von 'nem Action-Helper? Eine direkte Möglichkeit sehe ich derzeit nicht, da weder die dispatch-Methode des FrontControllers noch die des Dispatchers etwas zurückgeben.

  5. #5
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    wie würde das konkret aussehen?

    ich bin noch recht neu im Zend-Framework-Umfeld. Ich bin dabei ein recht großes Flash/Flex-Backend zu konzipieren. Dabei würde ich gerne auf ein Framework zurückgreifen. Auf den ersten Blick hat mir das ZF direkt zugesagt. Nur habe ich irgendwie das Gefühl, dass es ausschließlich für HTML-Ausgaben geeignet ist.
    Ich würde gerne alles nutzen können (ACL, Auth, DB, Config etc.) aber eben OHNE eine String-Ausgabe als HTML. Das muss doch irgendwie möglich sein...

  6. #6
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Im Zend Manual findest du etwas über Action Helper. Das Zend Framework ist ein Framework, in dem man nicht alles nutzen muss, was es gibt. Deshalb ist es auch möglich, das Framework ohne HTML-Ausgabe zu nutzen. Allerdings musst du dich damit auseinandersetzen, damit du das erreichst, was du willst. Um es intuitiv bedienen zu können, ist das ZF einfach zu mächtig.

  7. #7
    Erfahrener Benutzer
    Registriert seit
    26.12.2006
    Ort
    Sydney
    Beiträge
    324
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    warum nicht die Ausgaben als xml an flash/Flex übergeben. Ich habe habe zwar noch nicht mit flex gearbeitet aber bei Flash hat sich die XML Schnittstelle als recht gut erwiesen. Einfach über ein viewobject xml code schreiben den du dann mit flex/flash verarbeiten kannst !


    Funktioniert auf jeden Fall.

    Gruß Tee

  8. #8
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Wenn das geht, dann braucht man sich nicht mal mehr den Aufwand machen, einen Action-Helper dafür zu schreiben, da man es dann direkt als Response zurückgeben kann.

  9. #9
    Erfahrener Benutzer
    Registriert seit
    26.12.2006
    Ort
    Sydney
    Beiträge
    324
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    geht super, im prinzip kann man sogar den viewrenderer dafür verwenden, man muss sich nur eine geeignete XML struktur ausdenken, die bei jeden Aufruf wieder erstellt wird (beim aufruf einer URL durch Flex!). Weiterer Vorteil ist die einfache Cachebarkeit der XML Ausgaben (nun weiß ich es ), um genau diese wiederholten Abfragen abzufangen, das spart häufiges und unötigen ärgern der Datenbank, bzw quälen des PHP Moduls (im falle einer solchen Verwendung).
    Geändert von TeeJay (11.06.2007 um 21:03 Uhr)

  10. #10
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hi TeeJay.
    Danke für das Feedback. Aber dies kommt für mich nicht in Frage. XML ist für den Austausch zwischen Backend und dem Flex-UI nicht die beste Wahl. Wenn man nur ein paar kleine Datenhäppchen austauschen will ist der XML-Weg ok. Aber für komplexere Anwendungen ist der Weg über das binäre Protokoll AMF (in diesem Fall realisiert mit AMFPHP) der wesentlich schönere weg. Das XML-Serializing und Deserializing fällt weg und ich kann native Datentypen (String, Array, Object, Recordset etc.) direkt an Flex übergeben und dort weiterverarbeiten. Das läuft ja auch alles schon super. Da ich das Zend Framework aber auf den ersten Blick extrem sexy aussah, würde ich gerne die grundlegene Apllikations-Geschichte mit ZF realisieren. Hierzu brauch ich aber defintiv eine Möglichkeit, mit dem Rückgabewert des Controllers zu arbeiten, aber eben ohne HTML-Ausgabe.
    Wenn ich z.B. die HTML-Ausgabe (wie oben beschrieben) abschalte und $front->dispatch den Rückgabewert ebenfalls zurückgeben würde, dann wär ich der glücklichste Coder der Welt
    Kann mir einfach nicht vorstellen, dass es hier keine Möglichkeit oder zumindest einen brauchbaren Workaround gibt.

    Hat sonst noch wer ne Idee?
    *erwartungsvoll in die Runde schaut*

  11. #11
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ignorierst du den Einwurf mit den Action Helpers?
    Eine Alternative wäre es, die jeweiligen Dispatcher umzuschreiben...

  12. #12
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Sorry Blackflash.
    Nein ignoriere diesen nicht. Hab es nur noch nicht ganz verstanden, wie es damit gehen könnte. Bin mit den "Action Helpers" nicht vertraut und im manual ging es da etwas konfus zu. Hast Du da vll. noch nen kleinen Hinweis oder ein kleines Beispiel?
    danke und gruß aus köln,
    simon

  13. #13
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich möchte jetzt kein Tutorial schreiben, deshalb versuche deine Fragen/Probleme zu konkretisieren. Dann ist die Chance, dass dir jemand helfen kann, viel größer.

  14. #14
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    hm. ich weiß ehrlich gesagt nicht wie ich das problem noch konkreter beschreiben soll.
    ich brauche den Rückgabewert, um ihn weiterverarbeiten zu können.

  15. #15
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich interessiere mich aber für dein Problem mit dem Action Helper.

  16. #16
    Erfahrener Benutzer Avatar von budcha
    Registriert seit
    06.06.2007
    Ort
    Berlin
    Beiträge
    363
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von simonwidjaja Beitrag anzeigen
    ... Wenn ich z.B. die HTML-Ausgabe (wie oben beschrieben) abschalte und $front->dispatch den Rückgabewert ebenfalls zurückgeben würde, dann wär ich der glücklichste Coder der Welt
    Kann mir einfach nicht vorstellen, dass es hier keine Möglichkeit oder zumindest einen brauchbaren Workaround gibt.
    das reicht nicht?

    PHP-Code:

    <?php
    $front
    ->returnResponse(true);
    $response $front->dispatch();
    if (
    $response->isException()) {
        
    $exceptions $response->getException();
        
    // handle exceptions ...
    } else {
        
    $response->sendHeaders();
        
    $response->outputBody();
    }
    ?>

  17. #17
    Erfahrener Benutzer Avatar von Blackflash
    Registriert seit
    18.02.2007
    Beiträge
    399
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Das gibt eine "Zend_Controller_Response_Abstract" zurück. Darin kann man normalerweise allerdings keine unprimitiven Datentypen zurückgeben.

  18. #18
    Erfahrener Benutzer Avatar von budcha
    Registriert seit
    06.06.2007
    Ort
    Berlin
    Beiträge
    363
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    ups, nicht richtig gelesen, steht ja ganz oben *schäm* also nochmal grübeln , das mit dem html hat mich verwirrt. dachte reicht wenn er die pure ausgabe hat. *such* wird nich einfach

  19. #19
    Erfahrener Benutzer Avatar von budcha
    Registriert seit
    06.06.2007
    Ort
    Berlin
    Beiträge
    363
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    in der boostryp datei:
    PHP-Code:
    $frontController->returnResponse(true);
    $response $frontController->dispatch();
    if (
    $response->isException()) {
        
    $exceptions $response->getException();
        
    // handle exceptions ...
    } else {
        echo 
    '<pre>';
        
    var_dump(Zend_Registry::get('controllerReturn'));
        echo 
    '</pre>';

    IndexController, IndexAction:
    PHP-Code:
    <?php
    $controllerReturn 
    = array();

    $controllerReturn[] = 'ich';
    $controllerReturn[] = ' bin';
    $controllerReturn[] = ' ein';
    $controllerReturn[] = ' rückgabe';
    $controllerReturn[] = ' wert';

    Zend_Registry::set('controllerReturn'$controllerReturn);
    ?>
    funzt.
    Geändert von budcha (13.06.2007 um 22:15 Uhr) Grund: ach, ich hasse zuschnell posten ;)

  20. #20
    Neuer Benutzer
    Registriert seit
    11.06.2007
    Beiträge
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    interessanter workaround. werd ich mir mal genauer anschauen.
    sollte aber gehen. hätte nicht gedacht, dass diese doch recht simple Herausforderung so schwer zu realisieren ist (obwohl es für die Integration des Frameworks in bestehende Systeme schon irgendwie notwendig ist).

    danke für euren einsatz.

    mal sehen, ob ich es so einsetze oder doch was eigenes aufsetze und nur einzelne Komponenten des Frameworks nutze.

    Simon

Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •