我想在我的实体类中访问generateUrl。您可以在控制器类中访问generateUrl,如下所示:
$url = $this->generateUrl('your_route_name', array(/* parameters */));
执行此操作article,我应该尝试'创建服务,并在其中注入路由器组件'。然后我正在阅读Symfony Docs: Service Container并尝试配置,但我仍然无法做到。
services:
router:
class: ???
arguments: ???
如何将路由器作为服务?
更新
为什么我要在实体类中使用generateUrl
?
我正在使用Eko/FeedBundle。它需要在Entity中实现getFeedItemLink()。我需要提供URL作为此函数的返回值。
答案 0 :(得分:3)
简短的回答是:您不使用实体内部的路由器,也不会将实体创建为服务。您应该创建一个单独的服务,负责创建URL(如果您写了更多关于您正在尝试实现的内容,那么为您提供更合适的示例会更简单)。
例如:
use Symfony\Bundle\FrameworkBundle\Routing\Router;
class YourCustomUrlGenerator
{
private $router;
public function __construct(Router $router)
{
$this->router = $router;
}
public function generateUrl(YourEntity $entity)
{
// generate the url
}
}
然后为DIC定义您的服务:
services:
custorm_url_generator:
class: Namespace\YourCustomUrlGenerator
arguments: [@router]