Hi,
Meine Umgebung: TYPO3 4.7.5, PHP 5.3.16
Ich schreibe gerade eine kleine Kontaktformular-Extension mit Extbase.
Ich versuche gerade herauszufinden, warum die Validierung im Model nicht greift. Folgendes passiert:
Das Formularfeld "Company" soll mit dem Validator "NotEmpty" validiert werden (Ausschnitt aus dem Model):
<?php
class Tx_MyContactform_Domain_Model_ContactFormItem extends Tx_Extbase_DomainObject_AbstractEntity {
/**
* company
*
* @var string
* @validate NotEmpty
*/
protected $company;
/**
* Returns the company
*
* @return string $company
*/
public function getCompany() {
return $this->company;
}
/**
* Sets the company
*
* @param string $company
* @return void
*/
public function setCompany($company) {
$this->company = $company;
}
...
}
?>
Im Controller wird mit der Methode "showFormAction" das Formular angezeigt. Wenn das Formular abgeschickt wird, wird die Methode "submitFormAction" aufgerufen. Sollte ein Pflichtfeld nicht sauber ausgefüllt sein, so sollte ja die Validierung dafür sorgen, dass entsprechende Fehlermeldungen angezeigt werden.
<?php
class Tx_MyContactform_Controller_ContactFormItemController extends Tx_Extbase_MVC_Controller_ActionController {
/**
*
* @param Tx_MyContactform_Domain_Model_ContactFormItem $newContactFormItem
* @dontvalidate $newContactFormItem
* @return void
*/
public function showFormAction(Tx_MyContactform_Domain_Model_ContactFormItem $newContactFormItem = NULL)
{
$this->view->assign('newContactFormItem', $newContactFormItem);
}
/**
*
* @param Tx_MyContactform_Domain_Model_ContactFormItem $newContactFormItem
* @return void
*/
public function submitFormAction(Tx_MyContactform_Domain_Model_ContactFormItem $newContactFormItem)
{
$this->contactFormItemRepository->add($newContactFormItem);
$this->redirect('exitForm');
}
...
}
?>
Wenn ich das Formular jetzt mit leeren Company-Feld abschicke, erhalte ich folgende Fehlermeldung:
An error occurred while trying to call Tx_MyContactform_Controller_ContactFormItemController->submitFormAction()
Diese Meldung erscheint, weil die "submitFormAction" Methode aufgerufen wurde und einen Parameter erwartet den sie nicht bekommen hat.
Aber: die Methode dürfte eigentlich noch gar nicht aufgerufen werden, da dass Formular nicht sauber ausgefüllt wurde (leeres Company-Feld). Eine entsprechende Fehlermeldung des Validators fehlt.
Was habe ich falsch gemacht? Wieso wird nicht ordentlich validiert?