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

valera 14.04.2019 в 14:53

"Обратите внимание на то, что классы TextType и TextareaType должны быть загружены по следующим неймспейсам:

use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType; "

а этот неймспейс можно убрать тогда?

use Doctrine\DBAL\Types\TextType;
lolychank 14.04.2019 в 16:59

Если он нигде не применяется, то да.

valera 16.04.2019 в 22:26

Подскажите, пож-ста, почему так получилось, что ext-http отсутствует в composer.json ?

ext-http is missing in composer.json

это Storm ругается на Request

и после добавления ext-http надо php composer update сделать?

а use какой потом добавить? use http\Env\Request; не подойдёт же для Requesta?

lolychank 17.04.2019 в 04:14

Вы не должны обращать на это внимание. И добавлять в композер не нужно. Это не влияет на работу приложения.

valera 17.04.2019 в 10:38

web сервер не стартует, ошибку могу вечером только показать, но там что-то про $request и http\Env\Request;

lolychank 17.04.2019 в 10:41

Ок, жду ошибку

valera 17.04.2019 в 22:24
Cannot determine controller argument for "App\Controller\PostsController::a  
  ddPost()": the $request argument is type-hinted with the non-existent class  
   or interface: "http\Env\Request".
valera 18.04.2019 в 23:01

web сервер не стартует

Cannot determine controller argument for "App\Controller\PostsController::a  
  ddPost()": the $request argument is type-hinted with the non-existent class  
   or interface: "http\Env\Request".
lolychank 19.04.2019 в 07:45

Потому что вы используете не тот Request, надо использовать Request по неймспейсу Symfony\Component\HttpFoundation\Request

valera 19.04.2019 в 11:04

так всегда происходит по дефолту? Надо потом вручную namespace менять?

valera 21.04.2019 в 22:37

если addPost в конце контроллера - то ошибка

App\Entity\Post object not found by the @ParamConverter annotation.

если addPost поднять выше всех ф-ций - то ок

объясните пож-ста почему так

valera 23.04.2019 в 22:52

Разобрался, проблема в том, что эти пути для Симфони одинаковы
@Route("/posts/{slug}", name="blog_show")
@Route("/posts/new", name="new_blog_post")
соответственно если в браузере пишем /posts/new - акшен работает верхний т.е. не addPost, а showPost, вопрос теперь - как эти 2 пути сделать уникальными (по "\d+" не получиться - строка и там и там)?
PS. Очень жду ответа, уже несколько дней на этом уроке туплю)

valera 23.04.2019 в 23:05

сделал так
@Route("/posts/show/{slug}", name="blog_show")
@Route("/posts/add/new", name="new_blog_post")
но кажется это не очень правильно?

Iliusha99 19.08.2019 в 12:04

Привет, тоже мучился, можешь здесь почитать https://symfony.com/doc/current/routing.html там все подробно про таких проблемах написано, я лично использовал "requirments" к роутингу))

vtolstov 31.10.2019 в 11:49

А в итоге ответы на эти вопросы в следующем уроке!
Браво, господа! Чую курс надо с конца читать. Одни и те же проблемы в каждом уроке.

teroni 07.01.2020 в 20:34

ахах

MorskoyPes 16.12.2020 в 21:37

Спасибо тебе

Drumsid 29.12.2021 в 10:35

не знаю почему но у меня вот это не работает
$em = $this->getDoctrine()->getManager();
может потому что симфони 6 версии использую, решил вопрос вндрив в конструктор ManagerRegistry

Arhimedovich 08.03.2022 в 07:58

Друзья в новых версиях Симфону(начиная с версии 5.4) разработчики полностью отказались от методов get() и has(), а также решили полностью отказаться от методов dispatchMessage() и getDoctrine(), см. https://symfony.com/blog/new-in-symfony-5-4-controller-changes.
Поэтому конструкции типа $this->getDoctrine()->getManager() работать не будут. Вместо этого необходимо использовать внедрение соответствующих зависимостей в конструктор или определенный метод.
Лично я внедрил ManagerRegistry прямо в конструктор потому что в следующих уроках он нам также понадобиться для редактирования записей в постах.
/* @var PostRepository $postRepository /
private $postRepository;
private $doctrine;

 public function __construct(PostRepository $postRepository, ManagerRegistry $doctrine)
    {
        $this->postRepository = $postRepository;
        $this->doctrine = $doctrine;
    }

......

[Route('/post/new', name: 'new_blog_post')]

public function addPost(Request $request, Slugify $slugify)
{
    $post = new Post();
    $form = $this->createForm(PostType::class, $post);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $post->setSlug($slugify->slugify($post->getTitle()));
        $post->setCreatedAt(new \DateTime());
        $em = $this ->doctrine->getManager();
        $em->persist($post);
        $em->flush();

        return $this->redirectToRoute('blog_posts');
    }
    return $this->render('post/new.html.twig', [
        'form' => $form->createView()
    ]);
}
Логические задачи с собеседований