Twig 将变量传递到自定义控制器中的模板,而不使用GET/POST请求参数

Twig 将变量传递到自定义控制器中的模板,而不使用GET/POST请求参数,twig,shopware,Twig,Shopware,我有一个特殊的问题,我必须将变量传递给自定义控制器中的模板,但我不能使用POST或GET请求(原因是执行重定向的函数只发送GET请求,我不希望参数对最终用户可见) 有没有办法设置全局变量并将其附加到上下文或会话?我还尝试使用RequestDataBag,但重定向后,我无法访问以前设置的数据 以下是我试图做的: 公共函数支付(AsyncPaymentTransactionStruct$transaction,RequestDataBag$dataBag,SalesChannelContext$Sa

我有一个特殊的问题,我必须将变量传递给自定义控制器中的模板,但我不能使用
POST
GET
请求(原因是执行重定向的函数只发送
GET
请求,我不希望参数对最终用户可见)

有没有办法设置全局变量并将其附加到上下文或会话?我还尝试使用
RequestDataBag
,但重定向后,我无法访问以前设置的数据

以下是我试图做的:

公共函数支付(AsyncPaymentTransactionStruct$transaction,RequestDataBag$dataBag,SalesChannelContext$SalesChannelContext):重定向响应
{
$returnUrl=$transaction->getReturnUrl();
$dataBag->add(['test'=>'test1']);
返回新的重定向响应('/checkout/confirm/custom controller');
}
并试图在控制器中捕捉它:

公共函数cliffMarketsBerrySimplify(请求$Request,SalesChannelContext$context,请求数据包$dataBag)
{
$data=$dataBag->get('test');
返回$this->renderStorefront('@plugin/storefront/page/checkout/payment/custom template.html.twig');
}

但是,
$data
是空的。有没有其他办法解决这个问题。是否可以设置全局上下文变量或将变量附加到会话,然后检索它?

我的Shopware 6自定义支付插件也有同样的问题,我使用会话解决了这个问题

首先在支付处理程序中插入
会话
,然后在会话中存储变量:

公共函数支付(AsyncPaymentTransactionStruct$transaction,RequestDataBag$dataBag,SalesChannelContext$SalesChannelContext):重定向响应
{
$returnUrl=$transaction->getReturnUrl();
$this->session->set('test','test1');
返回新的重定向响应('/checkout/confirm/custom controller');
}
然后从控制器中的会话中读取变量,并将其传递给模板:

公共函数cliffMarketsBerrySimplify(请求$Request,SalesChannelContext$context,请求数据包$dataBag)
{
$data=$this->session->remove('test');
返回$this->renderStorefront(
“@plugin/storefront/page/checkout/payment/custom template.html.twig”,
['data'=>$data]
);
}

我的Shopware 6定制支付插件也有同样的问题,我用session解决了这个问题

首先在支付处理程序中插入
会话
,然后在会话中存储变量:

公共函数支付(AsyncPaymentTransactionStruct$transaction,RequestDataBag$dataBag,SalesChannelContext$SalesChannelContext):重定向响应
{
$returnUrl=$transaction->getReturnUrl();
$this->session->set('test','test1');
返回新的重定向响应('/checkout/confirm/custom controller');
}
然后从控制器中的会话中读取变量,并将其传递给模板:

公共函数cliffMarketsBerrySimplify(请求$Request,SalesChannelContext$context,请求数据包$dataBag)
{
$data=$this->session->remove('test');
返回$this->renderStorefront(
“@plugin/storefront/page/checkout/payment/custom template.html.twig”,
['data'=>$data]
);
}

这有什么业务/用例?变量中存储了什么?在我的例子中,它是支付网关的私有和公共令牌,关于价格、货币等的信息。它需要在模板中可访问,以便生成支付网关的iFrame,但也对用户隐藏。好的,这听起来像是会话的一个很好的用例这有什么业务/用例?变量中存储了什么?在我的例子中,它是支付网关的私有和公共令牌,关于价格、货币等的信息。为了生成支付网关的iFrame,它需要在模板中可访问,但也对用户隐藏。好的,这听起来像是一个很好的会话用例