Я не знаю, как использовать 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, созданный службой в методе списка контроллеров?