我正在尝试自动完成以便在键入时显示我的发票ID但我不相信脚本在我的ctp文件上运行。我正在尝试遵循本指南http://www.naidim.org/cakephp-3-tutorial-18-autocomplete我不太确定它是否实际上正在访问该功能。我曾尝试查看许多指南和教程,但似乎无法在cakephp 3上工作。
我的test.ctp
<?php use Cake\Routing\Router; ?>
<?php
echo $this->Html->script('//code.jquery.com/jquery-1.10.2.js');
echo $this->Html->script('//code.jquery.com/ui/1.11.4/jquery-ui.js');
echo $this->Html->css('//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');
?>
<script>
jQuery('#id').autocomplete({
source:'<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'getAll')); ?>',
minLength: 1
});
</script>
<?php
echo $this->Form->input('id', ['type' => 'int']);
?>
我的getAll功能
public function getAll()
{
if ($this->requrest->is('ajax')) {
$this->autoRender = false;
$name = $this->request->query['term'];
$items = $this->Invoices->find('all', [
'conditions' => [
'id LIKE' => '%' . $this->request->query('term') . '%'
]
]);
$resultsArr = [];
foreach ($results as $result) {
$resultsArr[] =['label' => $result['id'], 'value' => $result['id']];
}
echo json_encode($resultsArr);
}
}
我的发票表
CREATE TABLE IF NOT EXISTS `invoices` (
`id` int(11) NOT NULL,
`start_date` date DEFAULT NULL,
`close_date` date DEFAULT NULL,
`customer_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我相信它甚至根本没有被触发,因为如果你在test.ctp中将路由路径更改为无效路径,则在输入id时控制台中没有任何反应也不会发生错误。你可以在这里用team.southpacificavionics.com/invoices/test测试它,用户名“guest”和密码“password”登录