2012-03-14 5 views
0

ユーザが電子メールアドレスを入力すると、電子メールアドレスを使用してデータがデータベーステーブルにあるかどうかを確認します。存在する場合は、一致するレコード(頭文字、名前、住所、市区町村、州、郵便番号)を取り出し、フォームに表示する必要があります。電子メールアドレスがdbテーブルにない場合、ユーザはフォームの残りの部分を入力する必要があります。cakephp:電子メールアドレスを使用して一致するレコードを取得し、フォームで表示する

私はこのプロジェクトにcakePHPとMYSQLを使用しています。これはAJAXを使って行うことができますか?上記を行う最善の方法は何ですか?

ありがとうございます。

+0

AJAXとcakephpだけがこの目的のために十分であるかどうかを知りたいですか? – vaanipala

+0

はい、Ajaxとcakephpだけで十分です。私はちょうど(あなたのケーキのバージョンに応じて)以下のように正確にあなたを示しました。 – swiecki

+0

さて、私はまずAJAXリビジョンをいくつか実行しなければなりません。私はそれを試して、あなたに知らせます。 – vaanipala

答えて

1

実際にAJAXを使用するのが最善の方法です。私は電子メールフィールドの型イベントに関数をバインドし、コントローラ内に対応するデータがある場合はJSONオブジェクトを返すアクションを取得し、そのデータをJavascriptを使用して対応するフィールドに入力します。

私はJQueryを使用してこれを行っています。あなたのビューで

ノート:controller/actionは、それがコントローラに呼び出す必要があり、アクションあり、また#emailboxは、メールフォームのidを想定しています。 #otherboxは、他のフォーム要素のIDのプレースホルダです。

<script type="text/javascript">           
    $(document).ready(function() {  
    $('input#emailbox').keyup(function() { 

     // could do other stuff here, like show load bar or clear old results 
     //run the ajax 
     getPage(); 
    }); 
}); 


function getPage() { 

    //generate the parameter for the php script 
    var data = {email: $("#emailbox").val()}; 
    $.ajax({ 
     url: '/controller/action', 
     type: 'GET',   
     data: data, 
     dataType: 'json',  
     cache: false, 
     success: function (data) { 

      //add the content retrieved from ajax into whatever forms you like 
      $("#otherbox").val(data.[User][information][here]); 
      $("#otherbox").val(data.[User][information][here]); 
      $("#otherbox").val(data.[User][information][here]); 
      $("#otherbox").val(data.[User][information][here]); 
     }  
    }); 
}         
</script> 

クロムdevのツールを使用して、各フィールドに関連するデータにアクセスする方法を見つけ出すことができるようにあなたが戻って取得しているJSONオブジェクトのデバッグを支援できることに注意してください。お使いのコントローラで

public function searchForDetails() { 
     if($this->request->is('ajax')) { 
      $this->autoRender = false; 
//Get the email parameter data- this is one way to do it, you could also do it plenty of other ways 
$email = $this->request->query['email']; 
//Get user data- I have given an example of how to do so: 
$userdata = $this->User->find('first', array(
    'conditions' => array(
     'User.email' => $email, 
     'recursive' => -1)); 
return(json_encode($userdata)); 
      } 
    } 

これは、あなたがそれについて移動することができます1つの方法です。あなたがしなければならない作業は、chromeでJSONオブジェクトをデバッグして(devツールにアクセスするコマンドシフトjを使います)、オブジェクト内の配列のレイアウトを把握し、個々のフォームの値を設定できるようにすることです。私はこのアプローチの効率をテストしておらず、あなたがFacebookを開発しているならば、このようなことをしてはいけません。

関連する問題