4

URLフィールドのあるフォームがあります。このフィールドのデフォルト値はhttp://です。ただし、フィールドは必須ではありません。ユーザーはそれをスキップしてフォームを送信できます。必須ではなく、URLを入力しなかったため、エラーは返されません。しかし、http://のおかげで、今はそうなっています。

beforeValidate()を使用してhttp://かどうかを確認し、URLフィールドをクリアして、エラーメッセージをスキップできると聞きました。

しかし、beforeValidate()の使い方がわかりません。Googleを検索しましたが、実用的な例は見つかりませんでした。beforeValidate()のコードはどこに配置しますか?関数ですか?そこから送信されたフォームデータにアクセスするにはどうすればよいですか?

ありがとう。

4

2 に答える 2

6

はい、beforeValidate()はモデルの関数です。したがって、すべてのモデルにそれがあります。どのように使用する必要がありますか:

class YourModel extends AppModel {
   function beforeValidate(){
      if($this->data['YourModel']['url_field'] == 'http://'){
         unset($this->data['YourModel']['url_field']);
      }
      return true; //this is required, otherwise validation will always fail
   }
}
于 2011-01-25T08:57:50.777 に答える
2

http:// をフォームにハードコーディングする代わりに、URL に適切な検証を追加し、次のようにして空白を許可します。

'allowEmpty' => true

于 2011-01-26T09:52:24.577 に答える