我目前正在让用户上传一个 MS Word 文档,我在其中检查 XML 中的版本。控制器当前检查 isValid() 然后点击一个进行解析和提取的库(因为 word 是一个存档)。现在由于它在技术上已经“有效”,我需要通过库再次检查有效性。Zend Framework 中最好的做法是什么?
来自 Kohana Land 的欢呼声;)
我目前正在让用户上传一个 MS Word 文档,我在其中检查 XML 中的版本。控制器当前检查 isValid() 然后点击一个进行解析和提取的库(因为 word 是一个存档)。现在由于它在技术上已经“有效”,我需要通过库再次检查有效性。Zend Framework 中最好的做法是什么?
来自 Kohana Land 的欢呼声;)
我想我明白你在找什么。
您当前调用的表单对表单有效,您的文件通过表单验证(正确的大小、扩展名......)现在您需要解压缩文件并验证内容。
我将假设您已经拥有验证内容的代码,并且只想了解如何在控制器中使用它。
'
public function anyAction() {
$form = new Form();
//test for $_POST
if ($this->getRequest()->isPost(){
//Test form for validity
if ($form->isValid($this->getRequest()->getPost()){
//will receive file upload (unless disabled in element) and filter form values,
//based on filters attached to the elements.
$data = $form->getValues();
//placeholder for whatever code is required to validate contents of file
$validateFile = new MyFileValidator();
//test for valid file contents
if ($validateFile->isValid($data['file']){
//Do some Stuff
}
//if file contents is not valid, display form and populate values with unfiltered values
$form->populate($this->getRequest()->getPost());
}
//if form is not valid, it should stay populated and display element errors
}
//if not post send form to view
$this->view->form = $form;
}
此示例应为此类问题提供基本的控制器工作流程。我希望它能解决你的问题。