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




(12)

मैं सिम्फनी के लिए बहुत नया हूँ। जावा और अन्य जैसी अन्य भाषाओं में मैं मूल्य प्राप्त करने के लिए 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() विधि का उपयोग करने में मैं गलत कहां कर रहा हूं। किसी भी तरह की सहायता को आभार समझेंगे।


Answers

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

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

$content = $request->getContent();

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


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

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

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

(पद)

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

(प्राप्त)

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

(सामान्य)

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

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

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

आप अपने फॉर्म फ़ील्ड मान प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // retrieve GET and POST variables respectively
    $request->query->get('foo');
    $request->request->get('bar', 'default value if bar does not exist');
}

या आप सभी फॉर्म मानों का उपयोग कर सरणी के रूप में भी प्राप्त कर सकते हैं

$request->request->all()

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

इसे आज़माएं, यह काम करता है

$this->request = $this->container->get('request_stack')->getCurrentRequest();

सादर


प्रयत्न

$request->request->get('acme_demobundle_usertype')['username']

अपने फॉर्मुलर फ़ील्ड का विशेषता नाम का निरीक्षण करें


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

public function someAction(Request $request)

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

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

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

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

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

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

use Symfony\Component\HttpFoundation\Request;

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

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

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

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

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

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 }

print_r () और var_dump () डीबगिंग उद्देश्य के लिए PHP में उपयोग किए गए ऐरे डीबगिंग फ़ंक्शन हैं। print_r () फ़ंक्शन सरणी कुंजी और उसके सदस्यों को ऐरे ([कुंजी] = मान) के रूप में देता है जबकि var_dump () फ़ंक्शन डेटा सरणी और लंबाई के साथ सरणी कुंजियों के साथ सरणी सूची देता है जैसे कि ऐरे (array_length) {[0] = स्ट्रिंग (1) 'एक'}।







php symfony