帮助cakephp中的自动完成方法

时间:2009-08-03 09:09:23

标签: cakephp autocomplete

我正在尝试在我的应用程序中有一个自动完成框,其中从表中检索值。

我想在Users表中与一组用户共享一个表单。我有一个名为“共享”的链接,当我点击链接时,会生成自动完成框。

现在,当我在文本框中输入任何字母时,我希望它是自动建议的。

这是我的视图文件/views/main/home.ctp

<?php echo $javascript->link('prototype');?>
<?php echo $javascript->link('scriptaculous');?>
<?php echo $javascript->link('effects');?>
<?php echo $javascript->link('controls');?>

$(document).ready(function(){

    $(".Share<?=$r['Form']['id'];?>").click(function(){
        $("#share<?=$r['Form']['id'];?>").toggle("show");
  });
});

<li id="Share<?php echo $r['Form']['id']?>">
  <a href="#" class="Share<?=$r['Form']['id'];?>">Share</a>
  <div id="share<?php echo $r['Form']['id']?>">
      <?php echo $form->create('User', array('url' => '/forms/share'));?>
      <?php echo $ajax->autoComplete('User.name', '/forms/autoComplete');?>
      <?php echo $form->end('Share');?>
</div>  
</li>

这是我的auto_complete.ctp文件:/views/forms/auto_complete.ctp

<?php echo $javascript->link('scriptaculous.js');?>
<?php echo $javascript->link('prototype.js');?>
 <ul>
     <?php foreach($users as $user): ?>
        <li><?php echo $user['User']['name']; ?></li>
     <?php endforeach; ?>
</ul>

这就是forms_controller中的函数:/ forms / autoComplete

function autoComplete()
{
    $this->set('users',$this->User->find('all',array('conditions'=>array('User.name LIKE' => $this->data['User']['name'].'%'))));
    $this->layout = "ajax";
}

我在auto_complete.ctp文件中得到了结果,也就是说,如果我在autoComplete文本框中键入字母's',我会在该文件中找到相应的用户,但是我没有在文本中获得这些值框。有人帮帮我。

1 个答案:

答案 0 :(得分:1)

我自己找到了答案。

如果你使用JQuery,

cakephp的自动完成功能不起作用。

我删除了该行

 <?php echo $javascript->link('jquery');?> 

它正在运作......

编辑:

如果您还想使用jquery并且需要jquery.js文件,则需要在jQuery中启用no-conflict模式,如站点中所示   http://docs.jquery.com/Using _的jQuery __其他_