Zum Inhalt springen

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

Erstellt am 11. Februar 2013 · 6 Antworten · letzte Antwort am 16. April 2014

Tags: Frage

NJoyLife ·

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

Sorry, the requested view was not found.
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

chvonrohr ·

Hi

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

$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

return '';

am Ende der Action.

Gruss

NJoyLife ·

Hi chvonrohr

Danke für deine Antwort.

return '';

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

Gruß
NJoyLife

beo6 ·

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

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

dann kannst du mit

<?php
$renderer = $this->getPlainRenderer('Mailtemplate', 'txt');
$renderer->assign('name', $name);
$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 ·

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

$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