Symfony Demo
  • Homepage
  • Search
  • Choose language
    • English
    • Français
    • Deutsch
    • Español
    • Čeština
    • Nederlands
    • Русский
    • Українська
    • Română
    • Português (brasil)
    • Polski
    • Italiano
    • 日本語
    • Indonesia
    • Català
    • Slovenščina
    • Hrvatski
    • 中文 (中国)

This is a demo application built in the Symfony Framework to illustrate the recommended way of developing Symfony applications.

For more information, check out the Symfony doc.

Click on this button to show the source code of the Controller and template used to render this page.

Source code used to render this page

Controller codesrc/Controller/BlogController.php at line 151

/**
 * @Route("/search", name="blog_search")
 * @Method("GET")
 */
public function search(Request $request, PostRepository $posts): Response
{
    if (!$request->isXmlHttpRequest()) {
        return $this->render('blog/search.html.twig');
    }

    $query = $request->query->get('q', '');
    $limit = $request->query->get('l', 10);
    $foundPosts = $posts->findBySearchQuery($query, $limit);

    $results = [];
    foreach ($foundPosts as $post) {
        $results[] = [
            'title' => htmlspecialchars($post->getTitle()),
            'date' => $post->getPublishedAt()->format('M d, Y'),
            'author' => htmlspecialchars($post->getAuthor()->getFullName()),
            'summary' => htmlspecialchars($post->getSummary()),
            'url' => $this->generateUrl('blog_post', ['slug' => $post->getSlug()]),
        ];
    }

    return $this->json($results);
}

Twig template codetemplates/blog/search.html.twig at line 1

{% extends 'base.html.twig' %}

{% block javascripts %}
    {{ parent() }}
    <script src="{{ asset('build/js/search.js') }}"></script>
{% endblock %}

{% block body_id 'blog_search' %}

{% block main %}
    <form action="{{ path('blog_search') }}" method="get">
        <div class="form-group">
            <input name="q"
                   class="form-control search-field"
                   placeholder="{{ 'post.search_for'|trans }}"
                   autocomplete="off"
                   autofocus
                   data-no-results-message="{{ 'post.search_no_results'|trans }}"
            >
        </div>
    </form>

    <div id="results">
    </div>
{% endblock %}

{% block sidebar %}
    {{ parent() }}

    {{ show_source_code(_self) }}
{% endblock %}

© 2025 - The Symfony Project

MIT License