我有一个问题让我被封锁,我需要帮助!
通过使用knockoutJs和控制器来获取form_key,我试图重定向到愿望清单,以便根据网址添加产品:wishlist/index/add
我尝试通过以下方式做到这一点: 在淘汰赛中Js:
addToWishlist(productRelatedId) {
console.log("product id", productRelatedId);
const params = {
'productId': productRelatedId,
};
var url = urlBuilder.build('related/wishlist/data');
/*var url = '/test_route/index/test';
var param = {eventid: attribute1.value};*/
$.ajax({
url: url,
data: params,
type: "GET",
success : function (response) {
console.log(response);
}
});
}
在控制器中:
<?php
namespace Devlat\RelatedProducts\Controller\Wishlist;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\Data\Form\FormKey;
class Data implements HttpGetActionInterface
{
/**
* @var FormKey
*/
private $formKey;
/**
* @var ResultFactory
*/
private $resultFactory;
/**
* @var RequestInterface
*/
private $request;
public function __construct(
FormKey $formKey,
ResultFactory $resultFactory,
RequestInterface $request
)
{
$this->formKey = $formKey;
$this->resultFactory = $resultFactory;
$this->request = $request;
}
public function execute()
{
$formKey = $this->formKey->getFormKey();
$data = $this->request->getParams();
$params = [
'form_key' => $formKey,
'product' => $data['productId'],
];
$redirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$redirect->setUrl('wishlist/index/add', $params);
return $redirect;
}`
我按预期收到了productId,但这永远不会重定向我,我做错了什么?或者是我遗漏了什么?
谢谢!我将非常感谢您的帮助!
你尝试过这样的事情吗?
<?php
namespace Iqnis\Test\Controller\Wishlist;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\Controller\ResultFactory;
class Data implements HttpGetActionInterface
{
/**
* @var ResultFactory
*/
private $resultFactory;
public function __construct(
ResultFactory $resultFactory
)
{
$this->resultFactory = $resultFactory;
}
public function execute()
{
$params = [
'form_key' => 'MY_FORM_KEY',
'product' => 'MY_PRODUCT_ID'
];
$redirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$redirect->setPath('test/wishlist/add', $params);
return $redirect;
}
}