2015-11-11 104 views
3

在Extbase中,我通常會在控制器中自己處理表單驗證,特別是當我需要高級場景時,但現在我已經很簡單,但是有很多字段的大表單,所以我決定不浪費時間,只是使用TYPO3的驗證器。到目前爲止好,一般它的工作原理,反正我不能強迫Extbase驗證之前和結果Extbase節省了大量的空間,以調節值...所以它是無效的,樣本:TYPO3/Extbase - 如何在驗證/保存對象之前修改值?

/** 
* @var string 
* @validate StringLength(minimum=2, maximum=255) 
* @validate NotEmpty 
*/ 
protected $fooName = ''; 

正如我說我有幾的領域,並希望避免手動驗證它...有沒有解決方案?

注:我試過extbase_filter內線,這將是偉大的解決方案,如果它的工作(可惜不採取在TYPO3任何影響版本:6.2.6

也使用JS的前修整值明顯的原因。形式發送是沒辦法了。

回答

8

你可以做裝飾-INGset*方法中。驗證在Extabase的MVC過程發生集-ERS調用。

所以,你的例子是:

/** 
* @var string 
* @validate StringLength(minimum=2, maximum=255) 
* @validate NotEmpty 
*/ 
protected $fooName = ''; 

public function setFooName($fooName) 
{ 
    $this->fooName = trim($fooName); 
} 
+0

這是正確的,我只是一些調試後發現它;)它確保驗證是正確的(最終)反正仍然沒有修剪其顯示在重新加載值!形式(甚至將'trim()'添加到getters中)。 – biesior

+0

這可能會很棘手,但是你可以在Controller中使用'$ this-> request-> getReferringRequest() - > getArgument('your_argument_name')'在驗證錯誤的情況下不應該爲空。據我所知,這裏的價值形式被用作從字段的值來恢復用戶輸入。 –

+1

是的,我通常使用小形式......無論如何,雖然BE驗證現在可以正確使用setter中的這種修剪,然後在表單中使用_cosmetic_修剪,我將使用JS(類似於BE TCE形式),所以實際上這個主題是現在爲我解決。 – biesior

相關問題