• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

PHPRenderer: String-Variable statt Template rendern?

Zendy

New member
Hallo,

besteht in ZF2 die Möglichkeit, einen String statt einer Template-Datei zu rendern? "Wünsche mir" in etwa so etwas:
PHP:
$renderer = new PhpRenderer();
$model = new ViewModel(array('foo' => 'bar'));

$template = 'Variable foo is <?php echo $foo?>!';
$renderer->render($template);
Das ganze sollte möglichst OHNE zwischenspeichern von $template in einer Datei funktionieren. Da ich bislang nix dazu finden konnte, läuft es wohl darauf hinaus, dass ich Zend\View\Renderer\PhpRenderer erweitern muss.Oder?

Bin dankbar für jeden Tipp...

Z.
 

Kaiuwe

Super-Moderator
besteht in ZF2 die Möglichkeit, einen String statt einer Template-Datei zu rendern? "Wünsche mir" in etwa so etwas:
PHP:
$renderer = new PhpRenderer();
$model = new ViewModel(array('foo' => 'bar'));

$template = 'Variable foo is <?php echo $foo?>!';
$renderer->render($template);
Das ganze sollte möglichst OHNE zwischenspeichern von $template in einer Datei funktionieren. Da ich bislang nix dazu finden konnte, läuft es wohl darauf hinaus, dass ich Zend\View\Renderer\PhpRenderer erweitern muss.Oder?
Was hat das mit dem ZF zu tun? Das ist einfacher PHP-Syntax, denn das was du versuchst, ist doch nur folgendes:
PHP:
<?php
$template = 'Variable foo is <?php echo $foo?>!';
?>
Kann dies so funktionieren?

Beschreibe mal bitte dein tatsächliches Ziel bzw. vor welchem Problem du stehst, dann können wir dir bestimmt auch einen passenden Ansatz oder gar Lösung bieten. Dein momentan beschriebenes Vorhaben ist doch Murks.
 

Zendy

New member
Aaalso:
Um die API-Doc für PhpRenderer für die Methode render() zu zitieren:
Either the template to use, or a ViewModel. The ViewModel must have the template as an option in order to be valid.
Ergo: Ich MUUUUSS eine Datei angeben, die gerendert werden soll (in der Regel eine *.phtml-Datei im view-Verzeichnis). Ich würde aber gerne es ähnlich wie in Smarty handhaben (oder ist Smarty etwa Murks?! :rolleyes:), dass man keine Datei rendert sondern eine String-Variable, die z.B. aus einer Datenbank abgefragt wird.

Danke!
 

Kaiuwe

Super-Moderator
Aaalso:
Um die API-Doc für PhpRenderer für die Methode render() zu zitieren:
Klammere dich nicht am ZF oder an einem Template-Sytsem fest, sondern verwende einfach PHP selbst, denn es gibt kein gesondertes „Rendern“ von Inhalten. Das ZF verwendet Standard-PHP, denn PHP selbst ist bereits ein Template-Sprache!

PHP:
public function fooAction()
{
    // …aus Datenbank holen
    $row;

    $bar = 'Variable foo is ' . $row->foo . '!';
}
Ja, du darfst und sollst weiterhin PHP schreiben. :D
 

Zendy

New member
Ja, du darfst und sollst weiterhin PHP schreiben. :D
LOL, der ist gut und tatsächlich angebracht, wenn man viel mit Frameworks arbeitet...

Mein Problem ist, WIE stehen mir...
  • die Variablen eines Zend\View\Models
  • die View-Helpers
  • etc.
zur Verfügung?? Ich will doch bloß anstatt einer Template-Datei einen Template-String verwenden... :( *seufz*
 

Kaiuwe

Super-Moderator
Mein Problem ist, WIE stehen mir...
die Variablen eines Zend\View\Models
Das erzeugst du doch in der Kontroller-Aktion selbst und kannst daher auch zugreifen:
PHP:
$model = new ViewModel();
$model->foo = 'bar';
var_dump($model->foo);
PHP:
$helper = $this->getServiceLocator()->get('viewhelpermanager')->get('helperName');
Ich will doch bloß anstatt einer Template-Datei einen Template-String verwenden...
Und dann? Wie soll dies dann weiterverarbeitet werden?

Nachtrag:
Es gibt noch mehr Möglichkeiten. Zum Beispiel:
PHP:
$viewRenderer = $this->getServiceLocator()->get('ViewRenderer');
$content      = $viewRenderer->render($template, $model);
// oder
$model->setTemplate($template);
$content = $viewRenderer->render($model);
Vielleicht könntest du aber trotzdem noch sagen, was du nun eigentlich damit bezwecken möchtest.
 
Zuletzt bearbeitet:

Zendy

New member
Vielleicht könntest du aber trotzdem noch sagen, was du nun eigentlich damit bezwecken möchtest.
Sorry, aber das habe ich bereits mehrmals versucht. Wie oft kommt es vor, dass Inhalte nicht in einem statischen View-Script gespeichert werden (bei ZF die berühmten *.phtml-Dateien) sondern beispielsweise in einer DB. D.h. ich will/muss (siehe auch das Thread Thema....................) dann eben keine SKRIPT-DATEIEN rendern sondern einen String, der auch ZF-spezifischen-Code enthält (z.B. View-Helper).

ABER
Ich habe jetzt eine (vorläufige) Lösung gefunden:
PHP:
<?php
//Controller:

//Wird z.B. aus MySQL gefetcht:
$content = 'Willkommen auf unserer Seite <?php echo $this->url()?>!<br />
Freuen Sie sich auf unser <?php echo $this->foo?>!';

//View-Model:
$model = new ViewModel(array(    'foo' => 'bar',    'pageContent' => $content));
$model->setTemplate('foo/bar');


//View-Skript
<?php eval($this->pageContent)?>
 
Zuletzt bearbeitet:

Kaiuwe

Super-Moderator
Sorry, aber das habe ich bereits mehrmals versucht. Wie oft kommt es vor, dass Inhalte nicht in einem statischen View-Script gespeichert werden (bei ZF die berühmten *.phtml-Dateien) sondern beispielsweise in einer DB. D.h. ich will/muss (siehe auch das Thread Thema....................) dann eben keine SKRIPT-DATEIEN rendern sondern einen String, der auch ZF-spezifischen-Code enthält (z.B. View-Helper).
Ich entschuldige mich, wenn ich etwas überlesen haben sollte. Das du „View“-Helfer verwenden möchtest, habe ich erfragen müssen und das Thema Datenbanken ist ebenfalls neu.

Um es aber nochmals klarzustellen: beim ZF, und auch bei vielen anderen Frameworks, gibt es das „klassische Rendern“ durch einen gesonderten „Parser“ nicht. Es wird einfaches PHP verwendet, denn dies ist bereits ein Template-Sprache.
„Rendern“ beim ZF heißt also nur „PHP ausführen“. Daher auch oben mein Hinweis, dass du PHP schreiben darfst und sollst.

Wenn du jetzt einen „View“-Helfer benötigst, dann kannst du diesen, wie oben gezeigt, auch im Kontroller holen und ausführen.
Du kannst dir auch den „gerenderten“ Inhalt vom ViewRenderer holen. (siehe ebenfalls oben)

ABER
Ich habe jetzt eine (vorläufige) Lösung gefunden:
PHP:
<?php
<?php eval($this->pageContent)?>
Stichwort: „Eval is evil!“ - Also weg damit, denn mögliche Lösungen sind bereits genannt.
 
Oben