Symfony1 自动完成,搜索多个数据库表/字段-Symfony

Symfony1 自动完成,搜索多个数据库表/字段-Symfony,symfony1,jquery-autocomplete,Symfony1,Jquery Autocomplete,我有3种型号: 第条[名称、头衔] 照片[姓名、描述] 视频[名称、描述、转录] 现在,我想创建一个自动完成搜索,它将在输入字段中搜索每个模型和db字段中的匹配字符串 是否可以搜索这3个表 如果是这样的话,我该怎么做呢?我猜你在使用推进 这样做是完全可能的,但如果这些表与任何内容无关,则在保存时可能会导致一些混乱的代码。但如果您确实需要在这些表中搜索,我的方法是创建一个操作,如: public function executeAutocomplete(sfWebRequest $request)

我有3种型号:

第条[名称、头衔]

照片[姓名、描述]

视频[名称、描述、转录]

现在,我想创建一个自动完成搜索,它将在输入字段中搜索每个模型和db字段中的匹配字符串

是否可以搜索这3个表


如果是这样的话,我该怎么做呢?

我猜你在使用推进

这样做是完全可能的,但如果这些表与任何内容无关,则在保存时可能会导致一些混乱的代码。但如果您确实需要在这些表中搜索,我的方法是创建一个操作,如:

public function executeAutocomplete(sfWebRequest $request)
{
  $q = $request->getParameter('q');//The value to be searched
  $limit = $request->getParameter('limit');//Not completly necessary but recommendable
  if(count($q) == 0)
  {
    return sfView::NONE;//With no input, no search
  }

  $results = array( 'article' => array(), 'photo' => array(), 'video' => array());

  $article_search = ArticlePeer::search($q,$limit);
  $photo_search = PhotoPeer::search($q,$limit);
  $video_search = VideoPeer::search($q,$limit);

   $this->process_search($results,$article_search,$photo_search,$video_search);
  //Process those three arrays to fit your need

  return $this->renderText(json_encode($result));
}
现在,对等类上的搜索函数可以如下所示:

ArticlePeer>>

public static function search($q,$limit = null)
{
 $c = new Criteria();
 $c->add(self::NAME,'%'.$q.'%',Criteria::LIKE);
 if(!is_null($limit))
 {
  $c->addLimit($limit);
 }
 return self::doSelect($c);
}
最后,关于小部件,我已经使用并改编了sfWidgetJQueryAutocomplete,它工作得非常好,所以您应该检查一下

编辑:到embbed搜索字段的捷径是使用我前面提到的jQuery小部件创建sfForm,并将配置和js留给小部件。你必须找到处理搜索结果的方法。
我希望这对你有帮助

就是你要找的。

哇,太好了!我将在我的layout.php中使用搜索功能作为输入字段-如何使用sfWidgetJQueryAutocomplete这样做?@user390426我想你应该在哪里使用sfForm这样做,但是如果你使用ajax和输入,它无论如何都会很好地工作。记住在routing.yml中创建一个自动完成的路由,以便简化它。这将是一个全局搜索,并将其包括在我的布局中,搜索我的3个模型。我已经创建了动作和路线,以及模型方法。下一步要实现我想要的目标是什么?我已经创建了一个searchForm(),它扩展了sfForm()。然后我创建了一个组件,它有以下内容:$this->form=newsearchform();在组件模板中,我回显$form对象。这给了我一个输入框,但在字段中键入时,不会返回任何内容。它似乎没有触发自动完成