symfony Shopware 6 - AuthControllerDecorator已弃用

kgsdhlau  于 10个月前  发布在  PWA
关注(0)|答案(1)|浏览(103)

我目前正在开发一个Shopware插件来展示从注册页面登录页面。实现工作正常。
但是,我遇到了一个问题,Shopware指示Auth Controller已成为内部控制器,不再可访问。我正在寻找一个替代类,可以用于此目的。
你能推荐一个替代类来代替Auth Controller吗?

<?php declare(strict_types=1);
...

/**
 * @RouteScope(scopes={"storefront"})
 */
class AuthControllerDecorator extends AuthController 
{
    private AuthController $decoratedAuthController;
    private AccountLoginPageLoader $loginPageLoader;
    private AbstractSendPasswordRecoveryMailRoute $sendPasswordRecoveryMailRoute;
    private AbstractResetPasswordRoute $resetPasswordRoute;
    private AbstractLoginRoute $loginRoute;
    private AbstractLogoutRoute $logoutRoute;
    private StorefrontCartFacade $cartFacade;
    private AccountRecoverPasswordPageLoader $recoverPasswordPageLoader;
    private SalesChannelContextServiceInterface $salesChannelContext;

    public function __construct(
        AuthController $decoratedAuthController,
        AccountLoginPageLoader $loginPageLoader,
        AbstractSendPasswordRecoveryMailRoute $sendPasswordRecoveryMailRoute,
        AbstractResetPasswordRoute $resetPasswordRoute,
        AbstractLoginRoute $loginRoute,
        AbstractLogoutRoute $logoutRoute,
        StorefrontCartFacade $cartFacade,
        AccountRecoverPasswordPageLoader $recoverPasswordPageLoader,
        SalesChannelContextServiceInterface $salesChannelContextService
    ) {
        $this->decoratedAuthController = $decoratedAuthController;
        $this->loginPageLoader = $loginPageLoader;

        parent::__construct(
            $this->loginPageLoader = $loginPageLoader,
            $this->sendPasswordRecoveryMailRoute = $sendPasswordRecoveryMailRoute,
            $this->resetPasswordRoute = $resetPasswordRoute,
            $this->loginRoute = $loginRoute,
            $this->logoutRoute = $logoutRoute,
            $this->cartFacade = $cartFacade,
            $this->recoverPasswordPageLoader = $recoverPasswordPageLoader,
            $this->salesChannelContextService = $salesChannelContextService
        );
        
    }

    /**
     * @Route("/account/login", name="frontend.account.login.page", methods={"GET"})
     */
    public function loginPage(Request $request, RequestDataBag $data, SalesChannelContext $context): Response
    {
        /** @var string $redirect */
        $redirect = $request->get('redirectTo', 'frontend.account.home.page');

        $customer = $context->getCustomer();

        if ($customer !== null && $customer->getGuest() === false) {
            $request->request->set('redirectTo', $redirect);

            return $this->createActionResponse($request);
        }

        $page = $this->loginPageLoader->load($request, $context);

        return $this->renderStorefront('@Storefront/storefront/page/account/login/index.html.twig', [
            'redirectTo' => $redirect,
            'redirectParameters' => $request->get('redirectParameters', json_encode([])),
            'page' => $page,
            'loginError' => (bool) $request->get('loginError'),
            'waitTime' => $request->get('waitTime'),
            'errorSnippet' => $request->get('errorSnippet'),
            'data' => $data,
        ]);
    }
}

字符串

kse8i1jr

kse8i1jr1#

店面控制器不应装饰。如果你想在页面模板中添加数据,监听AccountLoginPageLoadedEvent并在页面中添加扩展。
如果你想实现自定义逻辑,例如在实际的登录过程中,你应该decorate the corresponding store-api路由Shopware\Core\Checkout\Customer\SalesChannel\LoginRoute,这是为了装饰。

相关问题