検証 - On Validate


フォームのアクション- 検証(Validate)



解説

不正なデータ入力を許してしまうアプリケーションは、とても不便ですね。Zoho Creator は、デフォルトで、適切な数のフィールド型の検証をサポートしています。
ユーザは、フォームの作成時に定義したフィールドに対して、制限を指定することができます。
たとえば、Email型のフィールドを定義した場合、Zoho Creator は、フォーム内のそのフィールドに入力されたデータが、有効なメールアドレスかどうかをチェックします。
もし、メールアドレスが無効な場合には、ユーザにエラーメッセージを表示します。

デフォルトの検証に加えて、Zoho creator では、アクションスクリプトによって、ユーザがフォームデータをサーバへ送信した時に、
実行されるカスタム検証を行うことができます。
このスクリプトは、
ユーザのフォームデータがデータベースに保存される前に、サーバーサイドで実行され、ユーザが入力したすべてのデータへアクセスします。
ユーザ入力への構文は、input.<変数名> です。使用例は、下記のとおりです。

検証のデフォルトアクションは、データの送信です。ですので、フォームを送信したくない場合には、送信の中止(cancel submit) を設定しなくてはなりません。
中止する場合には、ユーザへ適切な アラートメッセージ(alert message
を表示することも可能です。
その場合には、ユーザへ同じフォームが再表示され、データの再入力を促します。

検証のアクションスクリプトは、新規フォームデータが送信された場合や、既存データが修正され送信された場合、または、既存データが削除された場合に、実行されます。

構文

検証(On Validate) のフォームアクション- レコードの追加時(On Add) : レコードの追加時(On Add) ブロックに設定された検証フォームアクション(validate form action)のスクリプトは、新規フォームデータの送信時に実行されます。 スクリプトは、新規ユーザデータがデータベースに保存される前に実行されます。

on  add
{
on validate
{
// write validate form action to be executed when a new form data is submitted

{
// specify alert message if not valid and cancel submission
alert "<Specify alert message>";
cancel submit;
}
}

}

 

検証(On Validate) のフォームアクション - レコードの編集時(On Edit) : レコードの編集時(On Edit)ブロックに設定された検証フォームアクション(validate form action)スクリプトは、 既存レコードの修正&送信時に実行されます。スクリプトは、修正されたユーザデータがデータベースに保存される前に実行されます。

on  edit
{
on validate
{
// write validate form action to be executed when an existing record is modified and submitted
{
// specify alert message if not valid and cancel submission
alert "Enter valid Date of Birth";
cancel submit;
}
}

}

 

検証(On Validate) のフォームアクション - レコードの削除時(On Delete) :レコードの削除時(On Delete) ブロックに設定された検証フォームアクション(validate form action)スクリプトは、既存レコードの削除のための送信時に実行されます。スクリプトは、ユーザデータがデータベースから削除される前に実行されます。

 on  delete
{
on validate
{
if (input.Email_id != zoho.loginuserid)
{
alert "You can delete only your records";
cancel delete;
}
}
}

 

使用例① - フリー スクリプトを利用する場合

    フィールド値が指定の範囲にあるかどうかの検証 - レコードの追加時(on add) / レコードの編集時(on edit)

    下記のサンプルでは、誕生日フィールド内の年が、現在の年より大きい(未来の値である)場合には、送信アクションは中止されます。

    on  add
    {
    on validate
    {
    if (input.DateOfBirth.getYear() > zoho.currentdate.getYear())
    {
    alert "Enter valid Date of Birth";
    cancel submit;
    }
    }

    }

    on edit
    {
    on validate
    {
    if (input.DateOfBirth.getYear() > zoho.currentdate.getYear())
    {
    alert "Enter valid Date of Birth";
    cancel submit;
    }
    }

    }

     

    レコードの複製のチェック - レコードの編集時(on add)

    下記のサンプルでは、同じチームメンバーが2度以上追加されると、送信が中止されます。

    on  add
    {
    on validate
    {
    if (count(team_member[name == input.name]) > 0)
    {
    alert "Name already exists";
    cancel submit;
    }
    }

    }

     ここでは、つぎのように設定されています。

    team_member [name == input.name] - 名前(name)が現在入力された名前(input.name)に等しい、すべてのチームメンバー(team_members)を選択します
    input.name - フォーム送信時に、
    ユーザが名前("name")フィールドに入力した値
    count - カウント(count)演算子が、this.name に等しい名前(name)のチームメンバーの人数を返します

     

     

    登録の制限 - レコードの追加時(on add)
    下記の Deluge コードでは、送信のキャンセルのための要求された条件をチェックします。
    ここでは、カウント(count)関数がデータベース内でのレコード数の勘定に使われています。
    条件が満たされると、ユーザに対してアラートメッセージが表示され、送信が中止されます。レコードはデータベースに保存されません。

    on  add
    {
    on validate
    {
    if(count(Employee)>= 20)
    {
    alert("No more registrations allowed");
    cancel submit;
    }
    }

    下記の Deluge コードでは、zoho.currentdate 変数を利用して、登録日の有効期限が切れていないかどうかを検証します。

    on  add
    {
    on validate
    {
    if (zoho.currentdate > '20-Mar-2007')
    {
    alert "time for registration expired";
    cancel submit;
    }
    }

    }

     

    他のフィールド値に基づいたフィールド値の更新 - レコードの追加時(on add)/レコードの編集時(on edit)

    下記の Deluge コードでは、PatientID フィールドの値は、 First_Name と Last_Name の入力値と、変数 zoho.currenttime によって返された値「現在日時」に基づいて表現されています。

    on  add
    {
    on validate
    {
    input.PatientID = input.First_Name + " " + input.Last_Name + " " + zoho.currenttime;
    }

    }


    on edit
    {
    on validate
    {
    input.PatientID = input.First_Name + " " + input.Last_Name + " " + zoho.currenttime;
    }

    }

     

    ユーザは自身のレコード以外は削除できない制限 - レコードの削除時(on delete)

    下記の Deluge コードでは、Email_id フィールドの値は、変数 zoho.loginuserid によって返された値である、「ユーザのZohoログイン用メールアドレス」に基づいて計算されています。

    on  delete
    {
    on validate
    {
    if (input.Email_id != zoho.loginuserid)
    {
    alert "You can delete only your records";
    cancel delete;
    }
    }
    }

 

使用例② - スクリプトビルダーを利用する場合

次のトピック内の使用例②をご参照ください。 Deluge 文 -> 制御フロー -> 送信の中止 - Cancel Submit -> 使用例②スクリプトビルダーを利用する場合

 

関連リンク:

フォームのアクション

アラート - Alert

送信の中止 - Cancel Submit

 


 


    Post a comment

    Your Name or E-mail ID (mandatory)

     

    Note: Your comment will be published after approval of the owner.




     RSS of this page