Наилучшим способом действительно является использование AJAX.Я бы связал функцию с событием типа поля электронной почты, затем дал бы ему ПОЛУЧИТЬ действие в вашем контроллере, которое, в частности, возвращает объект JSON с соответствующими данными, если они есть, и затем заполнил бы эти данные в соответствующие поля, используя Javascript.
Я сделал это ниже, используя JQuery.
На ваш взгляд:
примечания: controller/action
- это действие, которое должно вызываться в контроллере, также предполагается, что #emailbox
быть идентификатором формы электронной почты.#otherbox
является заполнителем для идентификаторов других элементов формы.
<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>
Обратите внимание, что инструменты разработчика Chrome могут помочь в отладке возвращаемого объекта 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));
}
}
Это один из способов сделать это.Работа, которую вы должны сделать, - отладить объект JSON в chrome (используйте команду shift j, чтобы получить доступ к инструментам разработки) и выяснить расположение массивов внутри объекта, чтобы затем вы могли установить значения отдельных форм.Я не проверял эффективность этого подхода, и вам, вероятно, не следует делать что-то подобное, если вы разрабатываете Facebook.