zend-blog-3-backend

Форк
0
48 строк · 1.2 Кб
1
<?php
2

3
namespace App\ArgumentResolver;
4

5
use App\Entity\Post;
6
use App\Repository\PostRepository;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
9
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
10

11
class PostValueResolver implements ArgumentValueResolverInterface
12
{
13
    /**
14
     * @var PostRepository
15
     */
16
    private $repository;
17

18
    public function __construct(PostRepository $repository)
19
    {
20
        $this->repository = $repository;
21
    }
22

23
    /**
24
     * @param Request $request
25
     * @param ArgumentMetadata $argument
26
     *
27
     * @return bool
28
     */
29
    public function supports(Request $request, ArgumentMetadata $argument)
30
    {
31
        if (Post::class !== $argument->getType()) {
32
            return false;
33
        }
34

35
        return $request->attributes->has('slug');
36
    }
37

38
    /**
39
     * @param Request $request
40
     * @param ArgumentMetadata $argument
41
     *
42
     * @return \Generator
43
     */
44
    public function resolve(Request $request, ArgumentMetadata $argument)
45
    {
46
        yield $this->repository->findOneBy(['url' => $request->attributes->get('slug')]);
47
    }
48
}
49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.