1

我正在编写一个更高级的文件表单元素,更多的是一个显示当前加载的上传图像以及验证图像大小等的小部件。

如果文件通过验证,我希望表单元素本身将文件复制到可公开访问的文件夹中。这将意味着 a) 可以显示图像,并且 b) 如果整个表单没有验证,用户不需要重新上传图像。

无论如何,这是背景故事,但基本上我需要弄清楚如何从表单元素中获取函数以在表单验证该元素时运行。类似于在表单元素类中创建 onValidate() 函数。

最重要的是,我需要一个不会溢出到控制器(或尽可能少)的解决方案。我正在努力寻找一种干净的方法来实现这一点。

我想做这样的事情......

class File extends Element implements InputProviderInterface
{

....

public function isValid()
{
    if ( $isValid = parent::isValid() ) {
        echo "Hi there, glad you called";
    }

    return $isValid;
}
4

1 回答 1

1

Zend\Form\Element::getValidator()函数将在每次验证运行时调用。

我认为您应该调用一个担心复制文件的类。也许您想引发一个事件以使其更加解耦。

验证和过滤现在是 InputFilter 类的一部分。您的目标是编写一个专用的验证器并将其与您的元素硬连接。

如何实现这一点的一个例子,看看Zend\Form\Element\Select,它作为一个硬连线InArrayValidatoronValidate()方法。

于 2012-08-06T17:19:52.827 回答