php - Symfony2 में अनुरोध पैरामीटर कैसे प्राप्त करें




(9)

मैं सिम्फनी के लिए बहुत नया हूँ। जावा और अन्य जैसी अन्य भाषाओं में मैं मूल्य प्राप्त करने के लिए request.getParameter('parmeter name') का उपयोग कर सकता हूं।

क्या ऐसा कुछ भी है जो हम symfony2 के साथ कर सकते हैं।
मैंने कुछ उदाहरण देखे हैं लेकिन कोई भी मेरे लिए काम नहीं कर रहा है। मान लीजिए मेरे पास नाम उपयोगकर्ता नाम के साथ एक फॉर्म फ़ील्ड है। प्रपत्र कार्रवाई में मैंने इस तरह कुछ उपयोग करने की कोशिश की:

$request = $this->getRequest();
$username= $request->request->get('username'); 

मैंने भी कोशिश की है

$username = $request->getParameter('username');

तथा

$username=$request->request->getParameter('username');

लेकिन कोई भी विकल्प काम नहीं कर रहा है। हालांकि निम्नलिखित काम ठीक है:

foreach($request->request->all() as $req){
    print_r($req['username']);
}

getParameter() विधि का उपयोग करने में मैं गलत कहां कर रहा हूं। किसी भी तरह की सहायता को आभार समझेंगे।


अधिकांश मामलों को ऊपर दिए गए उत्तरों से ढंक दिया जाता है।

यदि पंक्ति डेटा भेजा गया है (उदाहरण के लिए, HTTP POST विधि का उपयोग कर दूरस्थ सेवा द्वारा एप्लिकेशन को भेजी गई JSON स्ट्रिंग को संसाधित करना।), GetContent () का उपयोग किया जा सकता है:

$content = $request->getContent();

सिम्फनी में http अनुरोधों पर अतिरिक्त उपयोगी जानकारी यहां मिल सकती है: https://symfony.com/doc/2.8/components/http_foundation.html


अब $this->getRequest() विधि को बहिष्कृत किया गया है, आपको इस तरह की कंट्रोलर कार्रवाई में Request ऑब्जेक्ट इंजेक्ट करने की आवश्यकता है:

public function someAction(Request $request)

इसके बाद आप निम्न में से किसी एक का उपयोग कर सकते हैं।

यदि आप अनुरोध डेटा से POST डेटा प्राप्त करना चाहते हैं तो निम्न:

$request->request->get('var_name');

लेकिन अगर आप अनुरोध से डेटा प्राप्त करना चाहते हैं तो इसका उपयोग करें:

$request->query->get('var_name');

आप इसे कर सकते हैं:

$clientName = $request->request->get('appbundle_client')['clientName'];

कभी-कभी, जब गुण सुरक्षित होते हैं, तो एक्सेस की सामान्य विधि के लिए मूल्य प्राप्त करने के लिए आपके पास पहुंच नहीं हो सकती है:

(पद)

 $clientName = $request->request->get('clientName');

(प्राप्त)

$clientName = $request->query->get('clientName');

(सामान्य)

$clientName = $request->get('clientName');

आपके विकल्प:

  1. सरल:
    • $request->request->get('param') ( $_POST['param'] ) या
    • $request->query->get('param') ( $_GET['param'] )
  2. सभी सिग्फ़नी फॉर्म, वैल्यू ट्रांसमिर्मेशन और त्रुटियों के साथ प्रस्तुति के साथ अच्छा सिम्फनी फॉर्म और कई अन्य विशेषताएं:
  3. बीच में कुछ (नीचे उदाहरण देखें)
<?php
/**
 * @Route("/customers", name="customers")
 *
 * @param Request $request
 * @return Response
 */
public function index(Request $request)
{
    $optionsResolver = new OptionsResolver();
    $optionsResolver->setDefaults([
        'email' => '',
        'phone' => '',
    ]);
    $filter = $optionsResolver->resolve($request->query->all());

    /** @var CustomerRepository $customerRepository */
    $customerRepository = $this->getDoctrine()->getRepository('AppBundle:Customer');

    /** @var Customer[] $customers */
    $customers = $customerRepository->findFilteredCustomers($filter);

    return $this->render(':customers:index.html.twig', [
        'customers' => $customers,
        'filter' => $filter,
    ]);
}

OptionsResolver बारे में अधिक जानकारी - http://symfony.com/doc/current/components/options_resolver.html


एक नियंत्रक के अंदर:

$request = $this->getRequest();
$username = $request->get('username');

नामकरण इतना सहज नहीं है:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // $_GET parameters
    $request->query->get('name');

    // $_POST parameters
    $request->request->get('name');

मैं इसे और भी आसान करता हूं:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    $foo = $request->get('foo');
    $bar = $request->get('bar');
}

एक और विकल्प है अपने पैरामीटर को अपनी क्रिया फ़ंक्शन परिभाषा में पेश करना:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request, $foo, $bar)
{
    echo $foo;
    echo $bar;
}

जो, मान लेता है कि आपने अपनी रूटिंग.आईएमएल फ़ाइल में अपने यूआरएल पैटर्न के हिस्से के रूप में {foo} और {bar} को परिभाषित किया है:

acme_myurl:
    pattern:  /acme/news/{foo}/{bar}
    defaults: { _controller: AcmeBundle:Default:getnews }

यदि आपको किसी चयन से मूल्य प्राप्त करने की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं:

$form->get('nameSelect')->getClientData();

public function indexAction(Request $request)
{
   $data = $request->get('corresponding_arg');
   // this also works
   $data1 = $request->query->get('corresponding_arg1');
}




symfony