XMLファイルをアップロードするフォームがあります。フォームが送信された後、XMLファイル内のタグのペアの内容を確認する必要があります。タグの内容が予想と異なる場合は、フォームの横にエラーが表示されます。
このコードを整理する方法が正確にわかりません。何か助けがありますか?
タグ:事前検証、事後検証
XMLファイルをアップロードするフォームがあります。フォームが送信された後、XMLファイル内のタグのペアの内容を確認する必要があります。タグの内容が予想と異なる場合は、フォームの横にエラーが表示されます。
このコードを整理する方法が正確にわかりません。何か助けがありますか?
タグ:事前検証、事後検証
このチェックを実行する場所はいくつかあります。
フォームを別の場所で再利用する必要がある場合、xml をチェックするロジックを再実装する必要がないため、カスタム バリデーターを好みます。
したがって、sfForm クラスで、カスタム バリデーターをファイル ウィジェットに追加します。
class MyForm extends sfForm
{
public function configure()
{
// .. other widget / validator configuration
$this->validatorSchema['file'] = new customXmlFileValidator(array(
'required' => true,
));
そして、あなたの新しいバリデータ内/lib/validator/customXmlFileValidator.class.php
:
// you extend sfValidatorFile, so you keep the basic file validator
class customXmlFileValidator extends sfValidatorFile
{
protected function configure($options = array(), $messages = array())
{
parent::configure($options, $messages);
// define a custom message for the xml validation
$this->addMessage('xml_invalid', 'The XML is not valid');
}
protected function doClean($value)
{
// it returns a sfValidatedFile object
$value = parent::doClean($value);
// load xml file
$doc = new DOMDocument();
$doc->load($this->getTempName());
// do what ever you want with the dom to validate your xml
$xpath = new DOMXPath($doc);
$xpath->query('/my/xpath');
// if validation failed, throw an error
if (true !== $result)
{
throw new sfValidatorError($this, 'xml_invalid');
}
// otherwise return the sfValidatedFile object from the extended class
return $value;
}
}
キャッシュをクリアすることを忘れないでください。問題php symfony cc
ありません。