কীভাবে get _POST এবং $ _GET পরামিতি পাবেন


26

আমি ajaxly একটি রুট কল এবং এটি তথ্য পাস, আমার নিয়ামক, আমি পেতে চান $_POST['var'], $_POST['var2'], কারণ Drupal 8 HttpFoundation ব্যবহারের মনে হয়, $_POSTএবং $_GETপুরোনো পদ্ধতিতে বিদ্যমান, আমি কিভাবে অ্যাক্সেস করতে পারেন নেই $_POSTকাস্টম কন্ট্রোলার মধ্যে পরামিতি?


2
_P _POST এখনও বিদ্যমান, আপনি কেবল এটি সরাসরি ব্যবহার করবেন না। যদি _P _POST খালি থাকে তবে অনুরোধের বিষয়টিও খালি হবে এবং আপনার ত্রুটিটি এর আগে ঘটে। প্রায়শই এটি উদাহরণস্বরূপ হয় কারণ মোড_আরাইটটি সঠিকভাবে সক্ষম / কনফিগার করা থাকে না এবং সন্ধান পাওয়া যায় না নির্দেশের মাধ্যমে পৃষ্ঠাটি পুনঃনির্দেশিত হয় যা পোস্ট ডেটা ফেলে দেয়।
বেরদির

উত্তর:


62

থেকে পরিবর্তন রেকর্ড :

$name = $_POST['name']; // form param

হয়ে

$name = \Drupal::request()->request->get('name'); // form param

ঘটনাক্রমে, GETvars জন্য , আপনি ব্যবহার করবেন:

$query = \Drupal::request()->query->get('name');

1
ধন্যবাদ, এবং আপনি কি জানেন যে আমি কীভাবে সমস্ত জিনিস পেতে পারি? আমার অর্থ $ _POST সম্পূর্ণভাবে একটি আইটেম নয়।
ইউসুফ

3
আমি চেক করি নি, তবে সিমফনি জেনে আমি ধরে নিলাম:\Drupal::request()->request->all()
ক্লাইভ

2
ধন্যবাদ, এটি আমার প্রশ্নের সঠিক উত্তর যদিও আমি প্রত্যাশিত ফলাফল না পেয়েছি (সম্ভবত অন্য কোনও জায়গায় সমস্যা আছে, আমি এটি অন্য একটি প্রশ্নে জিজ্ঞাসা করি
ইউসুফ

1
আমি নিশ্চিত করতে পারি যে আপনি সমস্ত G _GET ভেরিয়েবল পেতে \ দ্রুপাল :: অনুরোধ () -> ক্যোয়ারী-> সমস্ত () ব্যবহার করতে পারেন।
oknate

29

কোনও নিয়ামকটিতে একটি টাইপ-ইঙ্গিতযুক্ত যুক্তি সহ অনুরোধটি পান Request $request:

<?php

namespace Drupal\mymodule\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Request;

class ExampleController extends ControllerBase {

  /**
   * Controller to return a POST or a GET parameter.
   */
  public function action(Request $request) {

    // get your POST parameter
    $foo = $request->request->get('foo');

    // or get your GET parameter
    $foo = $request->query->get('foo');

    return ['#markup' => $foo];
  }

}

আরও তথ্য https://www.drupal.org/docs/8/api/routing-s systemm/ using- para امی-in- routes


11

RequestStackআপনার নিয়ামকটি ইনজেক্ট করুন ।

বর্তমান অনুরোধটিতে এমন queryবৈশিষ্ট্য রয়েছে যা ঘুরে ফিরে জিইটি পরামিতি ধারণ করে। requestপোস্ট পরামিতি রয়েছে।

<?php

namespace Drupal\example_module\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * An example controller.
 */
class ExampleController extends ControllerBase {

  /**
   * @var Symfony\Component\HttpFoundation\RequestStack
   */
  private $requestStack;

  /**
   * Constructor.
   *
   * @param Symfony\Component\HttpFoundation\RequestStack $request_stack
   */
  public function __construct(RequestStack $request_stack) {
    $this->requestStack = $request_stack;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('request_stack')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function action() {
    // Get your GET parameter here.
    $this->requestStack->getCurrentRequest()->query->get('foo');
  }

}

4

আপনি অনুরোধের মতো জিনিসটি চেক করতে পারেন

\Drupal::request()->getMethod();

এটি জিইটি বা পোষ্ট বা যা কিছু ফিরিয়ে দেবে। আপনি যদি কোনও বস্তুর অভ্যন্তরে কাজ করে থাকেন তবে ডিআই অনুরোধ পরিষেবাটি মনে রাখবেন।


3

আপনি যদি ব্যবহার করেন Content-Type: application/jsonতবে দয়া করে ব্যবহার করুন:

$post_data = json_decode( $this->request->getContent(),TRUE);

2

অন্য কোনও উত্তরই আমার পক্ষে কাজ করেনি তবে আমি এটি পেয়েছি:

$request->getContent();

0

এখানে ইউআরএল প্যারামিটারগুলি অ্যাক্সেস করার এবং এগুলি একটি TWIG টেমপ্লেটে পাস করার উদাহরণ রয়েছে, আমি বিবেচনা করছি আপনি ইতিমধ্যে আপনার মডিউল এবং প্রয়োজনীয় ফাইলগুলি তৈরি করেছেন এবং "/ পরীক্ষা? Fn = অ্যাডমিন" আপনার URL টি মনে করুন

  1. আপনার .মডিউল ফাইলটিতে হুক_থেম প্রয়োগ করুন এবং ভেরিয়েবল এবং টেম্পলেট নাম সংজ্ঞায়িত করুন (টেমপ্লেট ফাইল তৈরি করার সময় আপনি "-" এর সাথে "_" প্রতিস্থাপন করেছেন তা নিশ্চিত করুন)
function my_module_theme () {   
     return [
      'your_template_name' => [               
         'variables' => [
             'first_name'    => NULL,
          ],   
     ]; 
   }

এখন আপনার নিয়ামক তৈরি করুন এবং এতে কোডের নীচে রাখুন।

 namespace Drupal\my_module\Controller;

 use Drupal\Core\Controller\ControllerBase;
 use Symfony\Component\HttpFoundation\Request;


 class MyModule extends ControllerBase {

   public function content(Request $request) {

     return [
       '#theme' => 'my_template',
       '#first_name' => $request->query->get('fn'), //This is because the parameters are in $_GET, if you are accessing from $_POST then use "request" instead "query"
     ];
   }

 }

এখন আপনার TWIG ফাইলে যা "আমার-টেম্পলেট। Html.twig" হওয়া উচিত আপনি এই প্যারামিটারটি এই হিসাবে অ্যাক্সেস করতে পারবেন,

 <h3>First Name: {{ first_name }}</h3>

এবং এটি সম্পন্ন। আশাকরি এটা সাহায্য করবে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.