Symfony2实现输入文本并重新加载元素列表

时间:2014-11-14 09:31:20

标签: php symfony search input doctrine

我是symfony2的新手,我需要一些指导来解决一件事。

我有一个输入文本和一个包含数据库数据的表。

我希望当用户在输入文本中键入文本时,会使用数据库中的新数据重新加载表。

我希望从控制器调用的功能:

public function reloadCountryAction($name){
    $em = $this->getDoctrine()->getEntityManager();
    $qb = $em->createQueryBuilder();
    $qb->select("*")
        ->from("COUNTRY","p")
        ->where("p.COUNTRYNAME like '%:identifier%'")
        ->setParameter('identifier', $name);
    return $qb->getArrayResult();
}

输入用户将键入要搜索的项目的文本:

<input type="search" id="searchCountry" >

第一次提供表格的功能:

public function countryListAction() {
    $usr = $this->get('security.context')->getToken()->getUser();

    $allCountry = $this->getDoctrine()
            ->getRepository('backendentityBundle:Country')
            ->findAll();

    return $this->render('backendcountryBundle:Default:countryFirst.html.twig', array('sessionname' => $usr->getUsername(),
                'allCountry' => $allCountry));
}

和我要重新加载的表:

<table id="selectableTableCountry">
    {% for country in allCountry %}
        <tr id="rowtable" class="ui-widget-content">
            <td>
                <p class="txtCountryName">{{ country.countryname}}</p>
            </td>
        </tr>
    {% endfor %}
</table>

由于

2 个答案:

答案 0 :(得分:0)

这不是关于symfony的问题,而是我认为的javascript。 你应该在输入#searchCountry上监听(例如onkeyup)并执行ajax来路由调用reloadCountryAction并呈现新表<table id="selectableTableCountry">...</table>。只需在当前DOM中更改它。

答案 1 :(得分:0)

这是javascript问题,而不是symfony。 您应该使用ajax调用从数据库重新加载数据,或者只在元素上触发unfocus时发布它。