ম্যাজেন্টো 2 কীভাবে রিকুয়েস্ট পাবেন


36

Magento 2 এ কীভাবে অনুরোধ অ্যারে পাবেন? $_POSTএবং $_GETআমরা যেমন ম্যাজেন্টো 1 তে করেছিলাম:

Mage::app()->getRequest()->getPost()

আপনি কোন শ্রেণিতে POST এবং GET ডেটা চান তা নির্দিষ্ট করতে পারেন।
অস্কারপ্রফেশনাল

উত্তর:


73

আপনি যদি প্রযোজ্য এমন কোনও নিয়ামকের কাছ থেকে এটি চেষ্টা করে থাকেন তবে আপনি Magento\Framework\App\Action\Actionঅনুরোধটি পেতে পারেন $this->getRequest()->getPost()
আপনি যদি কাস্টম ক্লাসে থাকেন তবে আপনাকে কনস্ট্রাক্টরে অনুরোধটি ইনজেক্ট করতে হবে।

<?php
namespace Namespace\Module\Something;
class ClassName 
{
    protected $request;
    public function __construct(
       \Magento\Framework\App\RequestInterface $request
        ....//rest of parameters here
    ) {
       $this->request = $request;
       ...//rest of constructor here
    }
    public function getPost()
    {
        return $this->request->getPostValue();//in Magento 2.*
    }
}

$ _গেট সম্পর্কে কি?
zhartaunik

3
একই ভাবে. গেটপোস্টের পরিবর্তে গেটপ্যারামগুলি ব্যবহার করুন
মারিয়াস

Thx, এটি কাজ করে। আমি xDebug দিয়ে পিএইচপিস্টর্মে চেষ্টা করেছিলাম এবং উইন্ডো ওয়াচগুলি দেখি। তবে আমি খালি অ্যারে পেয়েছি।
zhartaunik

1
আমার ক্লাসে \Magento\Framework\App\Request\Httpকোন পদ্ধতি নেই getPost, আপনি কি এ সম্পর্কে নিশ্চিত?

1
@ জেরোইন ভার্মুলিউন-ম্যাগহোস্ট 2.5 বছর আগে যখন আমি এটি লিখেছিলাম তখন সেখানে MEQP2 স্ট্যান্ডার্ড ছিল না।
মারিয়াস

16

হাই আপনি এটি ব্যবহার করে মডেল, ব্লক এবং নিয়ন্ত্রণকারীগুলিতে সহজেই তা পেতে পারেন:

$this->getRequest()->getPost() 

অথবা Magento\Framework\App\RequestInterfaceআপনার নিজের ক্লাসে কনস্ট্রাক্টর পরামিতি যুক্ত করুন :

<?php
namespace MyModuleNameSpace\MyModule\Block
use Magento\Framework\App\RequestInterface;

class MyClass
{
    /**
     * Request instance
     *
     * @var \Magento\Framework\App\RequestInterface
     */
    protected $request;

    /**
     * @param RequestInterface $request
     */
    public function __construct(RequestInterface $request)
    {
        $this->request = $request;
    }

    public function getMyPostParams()
    {
        $postData = $this->request->getPost();
    }
}

আমার \Magento\Framework\App\RequestInterfaceকোন পদ্ধতি নেই getPost(), আপনি কি এ সম্পর্কে নিশ্চিত?

আপনি কোড চেষ্টা করে? কলিং আমার জন্য $this->getRequest()->getPost();একটি Zend\Stdlib\Parametersবস্তু ফেরত দেয় । এমনকি মূলত, ম্যাজেন্টো এই জাতীয় প্রচুর কল ব্যবহার করে, যেমন একটি প্যারামিটার সহ উদাহরণস্বরূপ Magento\Sales\Controller\Adminhtml\Order\AddComment31 লাইনে কল রয়েছে:$data = $this->getRequest()->getPost('history');
জ্যাক

@ অমিতবেরা আমার সহায়তা দরকার, Magento\Catalog\Model\Product\Option\ReadHandlerকেবলমাত্র পণ্যের বিবরণ এপিআই পাওয়ার জন্য প্লাগইন ক্লাসে কল করার কোনও উপায় আছে ?
কীর্তি নারিয়া

2

এটি কাজ করা উচিত, এটি পরীক্ষা করুন। তুলনা করুন এবং দেখুন কি অনুপস্থিত।

<?php
namespace MyModuleNameSpace\MyModule\Block
use Magento\Framework\App\RequestInterface;

class MyClass extends \Magento\Framework\View\Element\Template
{
    /**
     * Request instance
     *
     * @var \Magento\Framework\App\RequestInterface
     */
    protected $request;

    /**
     * @param RequestInterface $request
     */
    public function __construct(
        RequestInterface $request,
        \Magento\Framework\View\Element\Template\Context $context,
        array $data = [])
    {
        $this->request = $request;
        parent::__construct($context, $data);
    }

    public function getMyPostParams()
    {
        $postData = $this->request->getPost();
    }
}

2
টেমপ্লেটে, আমাদের অনুরোধটি পরিবর্তনশীলটিকে পুনরায় ঘোষণা করার দরকার নেই। আমাদের ইতিমধ্যে রয়েছে:$this->_request
খোয়া ট্রুংডিনহ

1
private $params = ['id', 'name'];

public function execute()
{
    $this->getPostParams();
}

private function getPostParams()
{
    foreach ($this->params as $k) 
    {
        $this->params[$k] = $this->getRequest->getParam($k);
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.