如何在TYPO3中验证文件上传字段?

时间:2015-07-23 20:48:13

标签: validation file-upload typo3 fluid extbase

我想验证TYPO3中的文件输入字段,但似乎NotEmpty annonation不适用于filereference类型的属性:

/**
 * image
 * 
 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
 * @validate NotEmpty
 */
protected $image;

/**
 * Returns the image
 * 
 * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
 */
public function getImage() {
    return $this->image;
}

/**
 * Sets the image
 * 
 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
 * @return void
 */
public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image) {
    $this->image = $image;
}

这个简单的流体标记:

<f:render partial="FormErrors" arguments="{field: 'data.image'}" />
<f:form.upload property="image" />

所以如果尝试提交空上传表单,我会收到以下错误消息,因为filereference仍为null:

属性路径中属性映射的异常&#34;&#34;:PHP Catchable Fatal Error:参数1传递给Fox \ Example \ Domain \ Model \ Data :: setImage()必须是一个实例TYPO3 \ CMS \ Extbase \ Domain \ Model \ FileReference,null给出......

1 个答案:

答案 0 :(得分:0)

好吧我的模型设置器中有一个错误的图像属性:O ...就像pgampe说的,如果你遇到fileupload的问题,请看看这个很棒的例子:github.com/helhum/upload_example如果你想要在上传输入上添加验证只需向图像属性添加验证注释,它就像魅力一样:)

/**
 * image
 * 
 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
 * @validate NotEmpty
 */
protected $image;

我改变了:

/**
 * Sets the image
 * 
 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
 * @return void
 */
public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image) {
    $this->image = $image;
}}

/**
 * Sets the image
 * 
 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
 * @return void
 */
public function setImage($image) {
    $this->image = $image;
}