从Entity类访问generateURL()

时间:2013-12-22 09:22:20

标签: symfony

我想在我的实体类中访问generateUrl。您可以在控制器类中访问generateUrl,如下所示:

$url = $this->generateUrl('your_route_name', array(/* parameters */));

执行此操作article,我应该尝试'创建服务,并在其中注入路由器组件'。然后我正在阅读Symfony Docs: Service Container并尝试配置,但我仍然无法做到。

app / config / config.yml

services:
    router:
        class: ???
        arguments: ???

如何将路由器作为服务?

更新

为什么我要在实体类中使用generateUrl

我正在使用Eko/FeedBundle。它需要在Entity中实现getFeedItemLink()。我需要提供URL作为此函数的返回值。

1 个答案:

答案 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]