Wenn ich auf die Schaltfläche zum Senden von Daten aus meinem SilverStripe
Formular an die Datenbank (xampp, mysql
) klicken, leitet es mich nicht zurück auf die Formularseite. Stattdessen wird es umgeleitet zu {BaseUrl}name_of_controller/name_of_form
-> in meinem Fall: localhost/pmtool/DeveloperController/NewTaskMask
. Ich habe stundenlang nach der Lösung dieses Problems gesucht, aber ohne Erfolg.SilverStripe Formular Umleitung Fehler
Hier ist der Code der Datei, in der das Formular und die Aktion definiert ist. In einer anderen HTML-Datei wird das Formular über $NewTaskMask
aufgerufen. Durch die URL localhost/pmtool/developer/newtask
wird die Funktion renderNewTaskForm
aufgerufen, die Vorlage mit $NewTaskMask
wird gerendert.
Alle Felder wie Titel, Beschreibung usw. sind in der Datenbank vorhanden.
class DeveloperController extends ContentController {
private static $allowed_actions = array('NewTaskMask','renderNewTaskForm');
private static $url_handlers = array(
'newtask' => 'renderNewTaskForm'
);
public function renderNewTaskForm(SS_HTTPRequest $request) {
return $this->renderWith('NewTaskForm');
}
public function NewTaskMask() {
$fields = new FieldList(
TextField::create('Title','Title')
->setAttribute('autocomplete', 'off')
->setAttribute('placeholder', 'Enter a task title ...'),
TextareaField::create('Description','Description')
->setAttribute('autocomplete', 'off'),
DropdownField::create('Project','Project', Project::get()->map('ID','Title')),
DropdownField::create('Developer','Developer', Developer::get()->map('ID','Title'))
);
$actions = new FieldList(FormAction::create('doCreateT','Task anlegen'));
$requiredFields = new RequiredFields(array('Title'));
return new Form($this, 'NewTaskMask', $fields, $actions, $requiredFields);
}
public function doCreateT($data, $form) {
// Creating a new task record
$nT = new Task();
$nT->Title = $data['Title'];
$nT->Description = $data['Description'];
$nT->Project = $data['ProjectID'];
$nT->Developer = $data['DeveloperID'];
$nT->write();
// Create a nice msg for our users
$form->sessionMessage('Task angelegt!','good');
// Redirect back to the form page
return $this->redirectBack();
}
}
thx Janne für Ihre Antwort, aber: es jetzt wieder, okay gut leitet, aber die Wirkung der Form ("doCreateT") wird nicht aufgerufen werden. Sie können dies überprüfen, wenn Sie ein Echo ("Hallo") setzen; Befehle in der Aktion. Es wurde auch kein Datenbankeintrag erstellt, wegen des Problems, dass die Aktion nicht erreicht wird. – crappidy
Hmm, das ist seltsam. Es funktioniert für mich [diesen Code ausführen] (https://gist.github.com/janneklouman/80840d1c142087325d1f1e5476814482). –
jetzt funktioniert es! Deine Lösung ist richtig. vielen Dank! Aber ich habe ein anderes Problem, siehe die nächste Antwort – crappidy