Sorry, the requested view was not found - keinen View angeben

  • NJoyLife NJoyLife
    R2-D2
    0 x
    81 Beiträge
    1 Hilfreiche Beiträge
    11. 02. 2013, 12:43

    Hallo zusammen
    Ich möchte gerne eine Aktion auf Knopfdruck programmieren, die nur die Aktion ausführt und dann aber auf der gleichen Seite bleibt (konkret eine Mailaktion). Dafür möchte ich natürlich keinen eigenen View angeben, also kein Template anlegen.
    Dann erhalte ich aber die Meldung

    1. Sorry, the requested view was not found.
    2. The technical reason is: No template was found. View could not be resolved for action "sendMail".

    Wie kann man einer Extbae-Aktion mitteilen, dass kein View für diese Aktion existiert oder geht das gar nicht?

    Danke und Gruß
    NJoyLife


  • 1
  • chvonrohr chvonrohr
    TYPO3-Anwärter
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2013, 13:15

    Hi

    Wenn du danach eine andere Action ausführen willst, kannst du am Ende der Action ein

    1. $this->redirect("actionname" );

    angeben.

    Willst du einfach, dass eine leere Seite ausgegeben wird (mach ich zum Teil bei Ajax calls) erreichst du dies mit einem

    1. return '';

    am Ende der Action.

    Gruss

  • NJoyLife NJoyLife
    R2-D2
    0 x
    81 Beiträge
    1 Hilfreiche Beiträge
    11. 02. 2013, 13:32

    Hi chvonrohr

    Danke für deine Antwort.

    1. return '';

    geht in genau die Richtung, die ich meinte. Allerdings funzt es bei mir nicht, denn die Seite bleibt dann komplett leer :-/

    Gruß
    NJoyLife

  • chvonrohr chvonrohr
    TYPO3-Anwärter
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2013, 13:54

    Wenn die bestehende Seite bleiben soll, kannst du entweder die Anfrage per Ajax machen (z.Bsp. jQuery: http://api.jquery.com/jQuery.ajax/) und die Antwort einfach ignorieren oder du leitest bei klick zuerst auf die Mail-Action und danach eben das redirect auf die vorige Action.

  • beo6 beo6
    Padawan
    0 x
    45 Beiträge
    1 Hilfreiche Beiträge
    13. 02. 2013, 15:58

    Soviel ich weiß wird wenn du am ende einer Action mit
    $this->redirect( "actionname" ); zu einer anderen Action weiterleitest gar nicht erst versucht eine View für die Action zu finden sondern direkt weitergeleitet. Also auch keine Fehlermeldung.

    Eine andere Möglichkeit wäre es auf der aktuellen Action zu sein und beim Button-Click nicht auf eine andere Action zu verweisen sondern einen Parameter mitgeben und dann in der gleichen Action wenn der Parameter vorhanden war eine eigene Instanz einer Fluid-View zu erstellen und diese dann per E-Mail versenden.

    eine eigene View kannst du mit der Methode erstellen

    1. <?php
    2. /**
    3.  * This creates another stand-alone instance of the Fluid view to render a template
    4.  * @param string $templateName the name of the template to use
    5.  * @param string $format the format of the fluid template "html" or "txt"
    6.  * @return Tx_Fluid_View_StandaloneView the Fluid instance
    7.  */
    8. protected function getPlainRenderer($templateName = 'default', $format = 'txt') {
    9. $view = $this->objectManager->create('TYPO3\CMS\Fluid\View\StandaloneView');
    10. $view->setFormat($format);
    11. $extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
    12. $templateRootPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($extbaseFrameworkConfiguration['view']['templateRootPath']);
    13. $templatePathAndFilename = $templateRootPath . $this->request->getControllerName().'/' . $templateName . '.' . $format;
    14. $view->setTemplatePathAndFilename($templatePathAndFilename);
    15. $view->assign('settings', $this->settings);
    16. return $view;
    17. }

    dann kannst du mit

    1. <?php
    2. $renderer = $this->getPlainRenderer('Mailtemplate', 'txt');
    3. $renderer->assign('name', $name);
    4. $content = $renderer->render();

    das template "Mailtemplate.txt" als txt laden und dort auf die variable {name} zugreifen.
    in $content steht dann der fertige Text den du mailen kannst.

    //Edit: sorry beim letzten teil war ich etwas zu voreilig. Danach hattest du ja gar nicht gefragt. :)

  • Sentor77 Sentor77
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    20. 03. 2013, 16:17

    Moin,
    setze doch einfach ans Ende der Action folgenden redirect:

    1. $this->redirect('', '', '', array(), 1766);

    1766 ist dabei die Pid der Seite, auf die du weiterleiten willst. Da trägst du dann die aktuelle Seite ein.

    LG

  • hannenz hannenz
    TYPO3-Anwärter
    0 x
    6 Beiträge
    1 Hilfreiche Beiträge
    16. 04. 2014, 11:55

    SORRY - im falschen Thread gepostet!! Kann man diesen Post löschen??

  • 1