Новый комментарий

valera 07.04.2019 в 21:57

Подскажите, пож-ста, как мы получили в переменную $post конкретный пост?

 /**
     * @Route("/posts/{slug}", name="blog_show")
     */

 public function post (Post $post){
        return $this->render('posts/show.html.twig',[

        'post'=> $post]);
    }

т.е. понятно, что Symfony нашёл пост по уникальному идентификатору из роута, а дальше как в экшене он оказался под именем $post?

lolychank 07.04.2019 в 22:01
Iliusha99 17.08.2019 в 12:35

Значит, symfony ищет сам в базе по полю через плейсхолдер? Или я так не понял(

Virus 02.01.2021 в 23:20

точно

Robokop 26.10.2021 в 09:21

Тоже интересно почитать, но ссылка уже не работает(

cyprusscorpion 15.04.2019 в 10:33

Цитата:
"Поскольку мы унаследовались от AbstractController, мы можем достать репозиторий следующим образом и это будет первый способ:
$repo = $this->getDoctrine()->getRepository(Post::class);"

А какое значение возвращает $this->getDoctrine()?

lolychank 15.04.2019 в 17:40

$this->getDoctrine() возвращает ManagerRegistry. Узнать это можно, если в шторме кликнете на метод.

cyprusscorpion 15.04.2019 в 20:50

Благодарю )

cyprusscorpion 15.04.2019 в 12:24

Цитата:
"Возвращаемся в шаблон posts/index.html.twig и меняем ссылку на новую:

<a href="{{ path('blog_show', {'slug': post.slug}) }}">{{ post.title }}</a>".
Так мы в этом шаблоне и находимся, и только что написали в нем:

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

{% block body %}
    <p>{{ post.body }}</p>
{% endblock %}

Да, видимо не так просто эту "симфоническую мелодию" объяснить так, чтобы сразу все стало понятно ))

lolychank 15.04.2019 в 17:41

Мы не в нем находимся. Это шаблон show.html.twig, а ссылка из index.html.twig.

cyprusscorpion 15.04.2019 в 20:47

Цитирую:
"Теперь переходим в шаблон и пишем следующее:

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

{% block body %}
<p>{{ post.body }}</p>
{% endblock %}".
Какой шаблон??? Наверное, так и надо писать: "В шаблон show.html.twig..."
Да этот файл еще создать надо, или он автоматически создается?
Чайники приходят учиться, на них и рассчитывайте :))

[email protected] 26.10.2019 в 17:56
App\DataFixtures\AppFixtures:
        $slugify: 'Cocur\Slugify\Slugify'

Не знаю, как это у вас работает, но у меня в переменной оказывается строка.
Нужно регистрировать бандл и использовать autowire, в readme библиотеки всё написано.

vtolstov 11.11.2019 в 08:38

Если репозиторий доставать способом

$repo = $this->getDoctrine()->getRepository(Post::class);

то может вылезти ошибка "some mandatory parameters are missing", так что юзайте конструктор, как тут описано.

[email protected] 27.01.2020 в 11:16
$posts = $this->postRepository->findAll(); где репозиторий? Так никто в контроллере не делает
Kutkh 27.06.2020 в 11:58

Да, Symfony ругается на то, что ему незнаком сервис Slugify из нашего прошлого урока.

У меня такой ошибки не возникло

MaksimLit 08.09.2020 в 18:32

Ссылка на posts/show.html.twig почему-то не работает. Пишет
Class App\Controller\Post does not exist
Где я допустил ошибку?

MaksimLit 09.09.2020 в 11:43

Всё, понял

MorskoyPes 16.12.2020 в 19:32

Тоже попался, пока исправлял баги с фикстурами, случайно удалил

use App\Entity\Post;
[email protected] 26.12.2021 в 12:49

Кто подскажет, как решить проблему с полученной строкой в __construct()?

Argument 1 passed to App\DataFixtures\AppFixtures::__construct() must be an instance of Cocur\Slugify\Slugify, string given, called in /var/www/html/var/cache/dev/ContainerI8f0Fva/getDoctrine_FixturesLoad
CommandService.php on line 36

kan22 04.03.2022 в 17:11

в файл config/bundles.php добавь:

return [
    // ...
    Cocur\Slugify\Bridge\Symfony\CocurSlugifyBundle::class => ['all' => true],
];

и вместо Slugify используй SlugifyInterface

da4nick 24.06.2022 в 13:14
  1. Новый маршрут - это метод контроллера с соотв. аннотацией:
    #[Route('/posts/{slug}', name: 'article_show')]
    public function post(Post $post)
    {
        return $this->render('posts/show.html.twig', [
            'post' => $post
        ]);
    }
  1. шаблон для статьи posts/show.html.twig - создаём руками
Логические задачи с собеседований