Как использовать сервис, упомянутый в документации, для генерации URL? - PullRequest
0 голосов
/ 03 января 2019

Я не знаю, как использовать URL, сгенерированный службой.

Это ссылка: Symfony Routing

Symfony Версия: Symfony 4.2.1 (env: dev, debug: true)

Я создал служебный файл.

└── Service
    └── SomeService.php



namespace App\Service;

use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

class SomeService {
    private $router;

    public function __construct(UrlGeneratorInterface $router) {
        $this->router = $router;
    }

    public function someMethod() {
        $url = $this->router->generate(
            'blog_show',
            ['slug' => 'my-blog-post']
        );

        return $url;
    }
}

Я создал файл контроллера.

├── Controller
│   ├── BlogController.php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;


class BlogController extends AbstractController {

    /**
     * Matches /blog exactly
     * @Route("/blog/{page?1}", name="blog_list", requirements={"page"="\d+"})
     */
    public function list($page = 1) {

        // $url = $this->generateUrl(
        //     'blog_slug',
        //     ['slug' => 'my-blog-post']
        // );


        // RedirectResponse
        // return new RedirectResponse($url);

        // JsonResponse
        return new JsonResponse(['page' => $page, 'url' => $url], 200);

        // Redponse
//        return new Response("This is list controlelr. Page: ".$page. "<br>URL: " . $url);

    }

    /**
     * Matches /blog/*
     *
     * @Route("/blog/{slug}", name="blog_slug")
     *
     */
    public function show($slug) {

        // $slug will equal the dynamic part of the URL
        // e.g. at /blog/yay-routing, then $slug='yay-routing'

        // ...

        return new Response("This is show controller.".$slug);
    }
}

Как мне вызвать службу в контроллере? Как использовать URL, созданный службой в методе списка контроллеров?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...