FosUserBundle:如何覆盖自定义路径的默认/配置文件路径?

时间:2017-07-07 15:06:01

标签: php symfony routing fosuserbundle

当您访问/ profile路径时,它会转到默认的个人资料页面。

我进行了更改,因此当您访问个人资料时,您需要在网址中添加ID以访问正确的网页。

但是,/ profile仍会转到默认页面,如何禁用此路由或将其转到自定义路径?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果查看public class TrackerFind : IFindSagas<SagaData>.Using<ITrackerData> { public Task<SagaData> FindBy(ITrackerData message, SynchronizedStorageSession session, ReadOnlyContextBag context) { return session.GetSagaData<SagaData>( context: context, whereClause: "JSON_VALUE(Data,'$.PaymentTransactionId') = @propertyValue", appendParameters: (builder, append) => { var parameter = builder(); parameter.ParameterName = "propertyValue"; parameter.Value = message.TrackerID; append(parameter); }); } } ,您将看到以下路线。您可以在自己的路由

中使用相同的名称覆盖任何路由(或其他配置)
@FOSUserBundle/Resources/config/routing/profile.xml

在你自己的routing.yml中你只需要覆盖这样:

<route id="fos_user_profile_show" path="/" methods="GET">
    <default key="_controller">FOSUserBundle:Profile:show</default>
</route>

<route id="fos_user_profile_edit" path="/edit" methods="GET POST">
    <default key="_controller">FOSUserBundle:Profile:edit</default>
</route>

请注意,您很可能不再使用默认的fos_user_profile_show: path: /profile/{id} defaults: { _controller: AppBundle:Profile:show } fos_user_profile_edit: path: /profile/edit/{id} defaults: { _controller: AppBundle:Profile:edit } ,而是让您自己的ProfileController扩展FOSUserBundle ProfileController。这就是我将控制器更改为ProfileController的原因,但显然这需要与您的代码匹配。

另请注意,AppBundle:Profile:edit需要在您的代码中实现,例如:

{id}

另请参阅此处以获取更详细的答案(针对其他路线):How to customize FOS UserBundle URLs