実際に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を開発しているならば、このようなことをしてはいけません。
AJAXとcakephpだけがこの目的のために十分であるかどうかを知りたいですか? – vaanipala
はい、Ajaxとcakephpだけで十分です。私はちょうど(あなたのケーキのバージョンに応じて)以下のように正確にあなたを示しました。 – swiecki
さて、私はまずAJAXリビジョンをいくつか実行しなければなりません。私はそれを試して、あなたに知らせます。 – vaanipala