Hallo zusammen,
ich habe in meinem Controller "Test" eine Funktion:
public function fooAction() { ... }
Jetzt möchte ich, dass diese Funktion über einen Link aufgerufen wird, zum Beispiel so:
<f:link.action controller="Test" action="foo">...</f:link.action>
Dabei soll die View nicht wechseln, sondern nur die Funktion aufgerufen werden, sonst nichts. Leider kommt die Fehlermeldung, dass keine View zu der Action gefunden werden konnte.
Jetzt meine Fragen:
Ist das Vorgehen von der Idee überhaupt richtig oder sollte ich keine Action benutzen? Muss eine Action immer eine passende View haben oder kann ich auch ohne diese arbeiten?
Hoffe, ihr könnt mir helfen, bin noch relativ neu auf diesem Gebiet.
Grüße,
Philipp
Hallo,
die Notwendigkeit eine Action zu definieren ist in dem Fall schon richtig. Wenn Du die Ausgabe an die View nicht leiten willst, kannst Du ein forward innerhalb der Action setzen. Andernfalls führt der ActionController zwingend zu dem genannten Fehler.
VG,
LuP
Danke für deine Antwort.
Muss ich den trotzdem eine .html Datei für die View erstellen und quasi leer lassen oder kann ich diese - wenn ich sie eh nicht benutzen möchte - einfach auslassen?
Vielleicht hast du für das forward noch ein, zwei Zeilen Code für mich parat? 🙂
Ich werde aber auch noch google und Co. befragen 😉
Edit:
Würde es zum Beispiel so klappen?
public function fooAction() {
$this->forward(bar());
}
private function bar() {
// ...
}
In dem Fall wäre bar() meine Funktion.
Mit forward leitest Du eine Action an eine andere weiter. Eine View für die ursprünglichen Action brauchst Du in dem Fall nicht, weil die Ausgabe unterbleibt. Es kann also keine .html Datei geben. Du kannst sie auslassen.
class Tx_MyExt_Controller_WhatEverController extends Tx_MyExt_Controller_AbstractController {
/*
* action foo
* return void
*/
public function fooAction() {
// ...
$this->forward('bar');
}
/*
* action bar
* return void
*/
public function barAction() {
// ... do something
}
}
VG,
LUP