deadloop
@deadloop
Активно осваиваю PHP

Как вывести в шаблон данные из базы?

Как вывести из базы в шаблон Тэги, не могу разобраться.

Вылетает ошибка.
Походу ошибка в этом фрагменте {{ posts.tags }}

5f7166fa85ce9779368559.png

Код Twig-шаблона
{% for posts in post %}
            <div class="row border-bottom pb-2 pt-2">
                <div class="col-md-3"><img src="{{ vich_uploader_asset(posts) }}" class="d-flex mr-3 img-thumbnail" alt="{{ posts.thumbnailFile }}"></div>
                <div class="col-md-9 pt-2">
                    <h4 class="mt-0 font-weight-bold"><a href="{{ path('single', {'post': posts.id }) }}">{{ posts.title }}</a></h4>
                    <p class="mb-0"><small><i class="far fa-calendar-alt pr-2"></i>{{ posts.createdAt|date("F jS \\a\\t g:ia") }}</small></p>
                    <a href="#" class="btn btn-primary btn-sm active mt-4" role="button" aria-pressed="true">{{ posts.tags }}</a>
                </div>
            </div>
        {% endfor %}


DefaultController.php

<?php

namespace App\Controller;

use App\Entity\Category;
use App\Entity\Menu;
use App\Entity\Post;
use App\Entity\Tag;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class DefaultController extends AbstractController
{
    /**
     * @Route("/default", name="default")
     */
    public function index()
    {
        $em = $this->getDoctrine()->getManager();
        $post = $em->getRepository(Post::class)->findAll();
        $menu = $em->getRepository(Menu::class)->findAll();
        $category = $em->getRepository(Category::class)->findAll();
        $tag = $em->getRepository(Tag::class)->findAll();


        return $this->render('default/index.html.twig', [
            'controller_name' => 'DefaultController',
            'post'=>$post,
            'category'=>$category,
            'tags'=>$tag,
            'menu'=>$menu

        ]);
    }

    /**
     * @Route("/post/single/{post}", name="single")
     */
    public function single(Post $post)
    {
        return $this->render('default/single.html.twig', [
            'post'=>$post

        ]);
    }

}
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
Austin_Powers
@Austin_Powers
Web developer (Symfony, Go, Vue.js)
У вас posts.tags это объект PersistentCollection (коллекция). Пройдитесь в цикле и выведите данные объектов
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
deadloop
@deadloop Автор вопроса
Активно осваиваю PHP
С подсказки Олег, решение выглядит так:

<div class="container bg-light">
        {% for posts in post %}
            <div class="row border-bottom pb-2 pt-2">
                <div class="col-md-3"><img src="{{ vich_uploader_asset(posts) }}" class="d-flex mr-3 img-thumbnail" alt="{{ posts.thumbnailFile }}"></div>
                <div class="col-md-9 pt-2">
                    <h4 class="mt-0 font-weight-bold"><a href="{{ path('single', {'post': posts.id }) }}">{{ posts.title }}</a></h4>
                    <p class="mb-0"><small><i class="far fa-calendar-alt pr-2"></i>{{ posts.createdAt|date("F jS \\a\\t g:ia") }}</small></p>
                    {% for tag in tags %}
                        <a href="#" class="btn btn-primary btn-sm active mt-4" role="button" aria-pressed="true">{{ tag }}</a>
                    {% endfor %}
                </div>
            </div>
        {% endfor %}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы