現在、XML内のバージョンをチェックしているMSWordドキュメントをユーザーにアップロードしてもらいます。コントローラは現在isValid()をチェックしてから、解析と抽出を行うライブラリにアクセスします(wordはアーカイブであるため)。技術的にはすでに「有効」になっているので、ライブラリで再度有効性を確認する必要があります。これに対するZendFrameworkの最善の行動方針は何ですか?
コハナランドからの歓声;)
現在、XML内のバージョンをチェックしているMSWordドキュメントをユーザーにアップロードしてもらいます。コントローラは現在isValid()をチェックしてから、解析と抽出を行うライブラリにアクセスします(wordはアーカイブであるため)。技術的にはすでに「有効」になっているので、ライブラリで再度有効性を確認する必要があります。これに対するZendFrameworkの最善の行動方針は何ですか?
コハナランドからの歓声;)
私はあなたが探しているものを理解していると思います。
現在呼び出しているのはフォームに対して有効です。ファイルはフォームの検証(正しいサイズ、拡張子など)に合格します。次に、ファイルを解凍して内容を検証する必要があります。
内容を検証するためのコードがすでにあり、それがコントローラーでどのように使用されるかを理解したいと思います。
'
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;
}
この例では、このタイプの問題の基本的なコントローラーワークフローを提供する必要があります。それがあなたの質問に答えることを願っています。