0

私のコントローラーにはいくつかのデータセットがあり、一部の値はクライアントから送信できません (ロジックのエラーではありません)。データベースの対応するフィールドを変更しません。ただし、値が空の文字列の場合はエラーをスローしたいと考えています。

標準のバリデーターでそれを行うにはどうすればよいですか?

例:

ユーザー名とパスワードの2つのフィールドを持つテーブルユーザーがあります。プロファイルのユーザーは、それらのいずれかまたは両方を変更できます。プロファイルは、オプションで構成されたプロキシを使用して ExtJS 4 で記述されるwriteAllFields: falseため、クライアントは変更されたフィールドのみをサーバーに送信します。

サーバー側で、たとえば、ユーザー名が見つからない場合

  • $this->_request->getPost('username')
  • $this->_getParam('username')

...または他の何か(nullです)、それを検証してデータベースで変更したくありません。

しかし、ユーザーがユーザー名フィールドに空の文字列を入力した場合、それを検証して、「ユーザー名を空にすることはできません」などのテキストでユーザーにエラーを表示したいと考えています。

これはどのように達成できますか?

4

1 に答える 1

0

個人的には、入力をフィルタリングしてから検証します。しかし、あなたの目的を達成するために、これはおそらくトリックを行うでしょう.ドキュメントから直接.

$valid = new Zend_Validate_NotEmpty();
$value  = '';
$result = $valid->isValid($value);
// returns false

Zend Form を使用してフォームを作成している場合は、draw010 の言及が適用されます。その場合、要素自体で setRequired() バリデーターを true に設定すると、入力が提供されないとユーザーにエラーが表示されます。Zend Formを使用していない場合、上記は正しい方向を示しているはずです。

于 2012-04-23T21:23:07.760 に答える