[英]TYPO3 validation of relation property in model
我的 extbase 擴展中有模型 - 如下所示。 默認情況下,TYPO3 將遞歸驗證所有作者的屬性及其關系。 TYPO3 中是否有可能只是驗證作者關系是否存在而不是遞歸驗證它的所有(作者的)屬性和關系?
class MyModel
{
/**
* @var string
* @validate NotEmpty
*/
protected $title = '';
/**
* @var \MyAnotherModel
* @copy reference
*/
protected $author;
Extbase 支持兩種類型的驗證(參見https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/9-CrosscuttingConcerns/2-validating-domain-objects.html )
在聚合根上使用(完整)模型驗證時,這意味着所有涉及的聚合也需要通過驗證——換句話說,沒有可以單獨啟用/禁用的條件驗證。
從我從你的場景和你的目標中了解到:
Author
屬性驗證(初始源中的MyAnotherModel
)author
屬性的基數(初始源中的MyModel.author
)這可以通過控制器動作驗證來完成,如下所示。
class MyModelCardinalityValidator extends AbstractValidator
{
public function isValid($value)
{
if (!$value instanceof MyModel) {
throw new \LogicException('...');
}
if ($value->getAuthor() === null) {
$this->addError('Author is missing', 1577381508);
// 1577381508 = unix-timestamp as "unique error code"
}
}
}
@Validate
在控制器動作中class MyController extends ActionController
{
/**
* @param MyModel $model
* @TYPO3\CMS\Extbase\Annotation\Validate("NamespaceTo\MyModelCardinalityValidator", param="model")
*/
public function myAction(MyModel $model)
{
// your application code
}
}
@Validate
控制器中的注解: https : //github.com/HofUniversityIndieOne2019/book-store-project/blob/cd14c2f58a7f15180a5113e9dbfa97c9fda66644/packages/book_store_app/Classes/Controller/CustomerController.php#L130
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.