我試圖在CakePHP 2.0中創建這個:http://www.justkez.com/cakephp-livesearch/。 的問題是,AjaxHelper不再可用在CakePHP的2.0,所以CakePHP 2.0 Livesearch
echo $this->Ajax->observeField('query', $options);
不工作了。
有什麼建議嗎?
我試圖在CakePHP 2.0中創建這個:http://www.justkez.com/cakephp-livesearch/。 的問題是,AjaxHelper不再可用在CakePHP的2.0,所以CakePHP 2.0 Livesearch
echo $this->Ajax->observeField('query', $options);
不工作了。
有什麼建議嗎?
我最終使用JSHelper來實現它,就像上面提到的一樣。我將這個標記爲答案,因爲它包含了關於如何去做的實際代碼示例。
<h3>Search Reservations</h3>
<?php
echo $this->Html->css('screen');
// we need some javascripts for this
echo $this->Html->script('jquery');
// create the form
echo $this->Form->create(false, array('type' => 'get', 'default' => false));
echo $this->Form->input('query', array('type' => 'text','id' => 'query', 'name' => 'query', 'label' => false))?>
<div id="loading" style="display: none; ">
<?php
echo $this->Html->image('ajax_clock.gif');
?>
</div>
<?php
$this->Js->get('#query')->event('keyup', $this->Js->request(
array('controller' => 'sales','action' => 'searchReservations', $event['Event']['id']),
array(
'update' => '#view',
'async' => true,
'dataExpression' => true,
'method' => 'post',
'data' => $this->Js->serializeForm(array('isForm' => false, 'inline' => true)))
));
?>
AjaxHelper
調用都是JavaScript函數的簡便方法;其中大部分可以很容易地在Javascript中實現,這是我喜歡自己做的方式。我猜想observeField只會添加一個「onchange」事件監聽器,但我從來沒有使用過,所以我不能確定。
對於AjaxHelper而言,Cake 2.0中有一個替代品(順便說一句),它被稱爲JsHelper
,它使用各種引擎來適應存在的多個JavaScript框架。它可能沒有AjaxHelper曾經擁有過的方法,但它更靈活,我很確定它會滿足您的需求。
調查新的助手,並從那裏開始。可能是一個開始的好地方... http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html –