2009-07-02 11 views
3

私のアプリケーションにJqueryとcakephpを使用しています。フォームの検証を実行する

私のページに$form->createを使って作成したフォームがあります。フォームは、ユーザーが今、私はすべてのフィールド値が満たされたかどうかのようなフォームでの検証を行いたい記入し、提出する上で、データが

function submit($id = null) 
{ 
foreach ($_POST as $key => $value): 

     $this->data['Result']['form_id']=$id;//form id 
     $this->data['Result']['label']=$key;//this is the fieldname 
    $this->data['Result']['value']=$value;//fieldvalue 

endforeach; 

    $this->Session->setFlash('Your entry has been submitted.'); 
    } 

によって保存された多くのフィールドが含まれています。塗りつぶされていない場合は、ユーザーに適切なフィールドを記入するように促す警告またはメッセージを表示する必要があります。それ、どうやったら出来るの?

さらに1つの提案が必要です。これは、クライアント側またはサーバー側での検証が優れていますか?

+1

は、なぜあなたはFormHelperのでフォームを作成している$ _POST IDを使用していますか? –

+0

* *の場合は、idではないと言うことになりました。 –

答えて

2

CakePHPにはバリデーションが組み込まれています:hereのドキュメントをチェックしてください。基本的には、モデルの各属性が満たさなければならないさまざまな条件(「空でない」など)を伝えます。 saveメソッドを呼び出すと自動的にチェックされます。その関数呼び出しの戻り値を確認してください。

リンクドキュメントページからの例:

<?php 
class User extends AppModel { 
    var $name = 'User'; 
    var $validate = array(
     'login' => 'alphaNumeric', 
     'email' => 'email', 
     'born' => 'date' 
    ); 
} 
?> 
+0

しかし、フォームフィールドはフォームごとに変わりますので、どうすればメール、ログイン、すべてのように保つことができます。 – useranon

+0

モデルでbeforeValidate()メソッドを使用して、$ validatesを動的に変更します。非表示のフィールドを設定するか、セッションを使用してbeforeValidateに、フォームごとにバリデーションを変更する方法を伝えます。 http://book.cakephp.org/view/682/beforeValidate –