我相信問題在於我如何在控制器中調用我的搜索服務。獨立搜索方法可以正常工作,如果直接將其放入我的控制器中。Symfony2 - 搜索方法無法正常工作
如果我在$ results(來自搜索類)上做轉儲,我可以看到搜索功能按預期工作。但是當我在我的控制器中調用它並將它傳遞給它時,它不起作用並且變得空白。
附註:當我通過在「查詢」的for循環{%爲結果查詢%}它出現空白,如果試圖使用「結果」,而不是我收到以下錯誤:
「無法在AcmeProjectBundle中的字符串變量(」練習「)上訪問屬性(」標題「):默認:第25行的search.html.twig)」。
的config.xml
services:
search:
class: Acme\ProjectBundle\Services\Search
arguments: ["@request_stack", @doctrine]
scope: request
搜索類(服務)
class Search
{
protected $request;
public function __construct(RequestStack $requestStack, Registry $doctrine)
{
$this->request = $requestStack->getCurrentRequest();
$this->doctrine = $doctrine;
}
public function search()
{
$results = null;
$query = $this->request->query->get('q');
if (!empty($query)) {
$em = $this->doctrine->getManager();
$results = $em->createQueryBuilder()
->from('AcmeProjectBundle:Blog', 'b')
->select('b')
->where('b.title LIKE :search')
->setParameter('search', "%${query}%")
->getQuery()
->getResult();
}
// exit(\Doctrine\Common\Util\Debug::dump($results));
return array(
'query' => $query,
'results' => $results,
);
}
}
SearchAction控制器
public function searchAction(Request $request)
{
// Calling from the service Search
$query = $this->get('search');
$results = $query->search();
// exit(\Doctrine\Common\Util\Debug::dump($query));
return $this->render('AcmeProjectBundle:Default:search.html.twig', array(
'query' => $query,
'results' => $results,
));
}
search.html.twig
{% block search %}
<form action="{{ path('acme_project_search') }}" method="GET">
<label><input type="search" name="q" value={{ app.request.query.get('q') }}></label>
<input type="submit" value="Search">
</form>
<br>
{% endblock %}
{% block body %}
{% for result in query %}
<div class="container">
<div class="row">
<div class="col-sm-8 blog-main">
<div class="blog-post">
<h2 class="blog-post-title">{{ result.title }}</h2>
<p class="blog-post-meta"><time datetime="{{ result.created|date('c') }}">{{ result.created|date('l, F j, Y') }}</time> by <a href="#">{{ result.author }}</a></p>
<p>{{ result.blog|truncate(350, true) }}</p><br>
<div class="tags">
<p><strong>Tags: </strong><span class="highlight">{{ result.tags }}</span></p>
</div>
</div><!-- /.blog-post -->
</div>
</div>
</div>
{% endfor %}
{% endblock %}
你有沒有在'app/config/config.yml'中正確設置你的服務?你能證明嗎? – ponciste
當然,增加/更新。 – webdev
所以這項服務運作良好?至少你可以稱它是正確的? – ponciste