लारवेल एक अनुरोध सरणी में मान जोड़ने का एक तरीका है


113

मैं स्टोर () या अद्यतन () विधि के साथ लॉरेल में एक स्थिति में आता हूं, अनुरोध पैरामीटर के साथ अनुरोध मान के लिए कुछ अतिरिक्त मूल्य जोड़ने के लिए अनुरोध पैरामीटर के साथ कोई भी तरीका है।

function store(Request $request) 
{
  // some additional logic or checking
  User::create($request->all());
}

आप किस प्रकार का उपचार करना चाहते हैं? क्या आप $request->all()सरणी में मुख्य मान जोड़ना चाहते हैं ?
हैमरबोट

हां मुझे एक मुख्य मूल्य जोड़ने की आवश्यकता है
विजयानंद प्रेमनाथ

क्या आप array_add()सहायक का उपयोग नहीं कर सकते ? $array = array_add($request->all(), 'new_key', $value);: laravel.com/docs/5.2/helpers#method-array-add यदि आप इस प्रकार की चीज़ नहीं खोज रहे हैं, तो क्या आप अपने प्रश्न के लिए अधिक जानकारी प्रदान कर सकते हैं?
हैमरबोट

$ अनुरोध php ऑब्जेक्ट है, जैसा कि मेरी समझ में आता है, यदि आप कंट्रोलर के पक्ष में कुछ विशेषताएं जोड़ना चाहते हैं, तो अनुरोध ऑब्जेक्ट को एक सरणी में परिवर्तित करें, फिर जो भी आप चाहते हैं उसे जोड़ दें
चतुरा हेटियाराचची

जवाबों:


207

आमतौर पर, आप अनुरोध ऑब्जेक्ट में कुछ भी जोड़ना नहीं चाहते हैं, संग्रह और put()सहायक का उपयोग करना बेहतर है :

function store(Request $request) 
{
    // some additional logic or checking
    User::create(array_merge($request->all(), ['index' => 'value']));
}

या आप यूनियन सरणियाँ दे सकते हैं :

User::create($request->all() + ['index' => 'value']);

लेकिन, यदि आप वास्तव में एक अनुरोध वस्तु में कुछ जोड़ना चाहते हैं, तो यह करें:

$request->request->add(['variable' => 'value']); //add request

3
हां यह मेरे लिए काम कर रहा है अब मैंने फ़ंक्शन स्टोर के रूप में कोड बदल दिया है (अनुरोध $ अनुरोध) {// कुछ अतिरिक्त तर्क या $ योजना की जाँच करना = 123; // उपयोगकर्ता की योजना $ अनुरोध का अनुरोध करने के लिए कुछ तर्क-> अनुरोध-> जोड़ें (['योजना' => $ योजना]); उपयोगकर्ता :: बनाने ($ अनुरोध> सभी ()); }
विजयानंद प्रेमनाथ

1
यह काम नहीं करता है क्योंकि $ अनुरोध-> सभी () एक सरणी है जो संग्रह नहीं है।
kjdion84

1
मुझे लगता है कि यह $ अनुरोध होना चाहिए-> अनुरोध-> जोड़ें (['चर' => 'मूल्य']);
सर्गेई ओनिशेंको

$ अनुरोध-> अनुरोध-> जोड़ें ... मुझे त्रुटि संदेश मिला ined अपरिभाषित चर: अनुरोध I लेकिन मेरे पास 「Illuminate \ Http \ Request का उपयोग किया था? I मुझे त्रुटि संदेश क्यों मिला?
रोपिनिन

क्या मुझे $ अनुरोध करने की आवश्यकता है = इकट्ठा (); प्रथम? क्या $ एक संग्रह या सरणी को पुनर्जीवित करता है?
रॉस्पिन

58

Alexey Mezeninउत्तर देने का संदर्भ :

उनके उत्तर का उपयोग करते समय, मुझे सीधे अनुरोध वस्तु में कुछ जोड़ना था और उसका उपयोग करना था:

$request->request->add(['variable', 'value']);

इसका उपयोग करते हुए यह दो चर जोड़ता है:

$request[0] = 'variable', $request[1] = 'value'

यदि आप मेरे जैसे नौसिखिया हैं और आपको एक सहयोगी सरणी की आवश्यकता है, तो सही तरीका है

$request->request->add(['variable' => 'value']);

आशा है कि मैंने आपका कुछ समय बचाया

पुनश्च: धन्यवाद @Alexey, आपने वास्तव में मुझे आपके उत्तर के साथ मदद की


$ अनुरोध-> अनुरोध-> जोड़ें ... मुझे त्रुटि संदेश मिला ined अपरिभाषित चर: अनुरोध I लेकिन मेरे पास 「Illuminate \ Http \ Request का उपयोग किया था? I मुझे त्रुटि संदेश क्यों मिला?
रोपिनिन

@robspin मुझे लगता है कि यह काफी देर हो चुकी है, लेकिन आपने शायद फ़ंक्शन में अनुरोध को इंजेक्ट नहीं किया है उदाहरण: फ़ंक्शन (अनुरोध $ अनुरोध)
मशरूम बैदुल्ला

1
आप में से जो इस बात की तलाश में हैं कि आपका मूल्य डेटाबेस में क्यों नहीं डाला जा रहा है क्योंकि मैंने अपनी Modelकक्षा में डेटाबेस के उस मूल्य को घोषित नहीं किया है :protected $fillable = ['slug'];
fWd82

40

मैंने $request->merge($array)लारवेल 5.2 में कार्य करने की कोशिश की और यह पूरी तरह से काम कर रहा है।

उदाहरण:

$request->merge(["key"=>"value"]);

2
यह सही समाधान है
JHOAN B. HENRICHE

17

इस विषय पर पर्याप्त ने कहा लेकिन मैं अपना जवाब जोड़ने के लिए विरोध नहीं कर सकता। मेरा मानना ​​है कि सबसे सरल तरीका है

request()->merge([ 'foo' => 'bar' ]);

16

लारवेल 5.6 में हम उदाहरण के लिए मध्यवर्ग के बीच के मापदंडों को पारित कर सकते हैं:

FirstMiddleware

public function handle($request, Closure $next, ...$params)
{
    //some code
    return $next($request->merge(['key' => 'value']));
}

SecondMiddleware

public function handle($request, Closure $next, ...$params)
{
    //some code
    dd($request->all());
}

1
वह $request->merge()विधि FTW! धन्यवाद।
मार्टिन जॉइनर

15

आप नीचे दिए गए कोड का भी उपयोग कर सकते हैं

$request->request->set(key, value).

मेरे लिए बेहतर फिट बैठता है।


कम से कम लारवेल 5.6 के साथ ऐसा ही किया जाता है! शानदार उत्तर
Rockin4Life33

4

पूर्व के लिए एक नया पैरामीटर जोड़ने के लिए: newParamवर्तमान Requestवस्तु के लिए, आप कर सकते हैं:

$newParam = "paramvalue";
$request->request->add(['newParam' => $newParam]);

नया पैरामीटर जोड़ने के बाद, आप इस नए जोड़े गए पैरामीटर को अनुरोध ऑब्जेक्ट द्वारा देख पाएंगे:

dd($request);//prints the contents of the Request object

3

मेरी टिप्पणियों के आधार पर :

$request->request->add(['variable' => 'value']);(ज्यादातर) POST, PUT & DELETE विधियों में काम करते हैं , क्योंकि मूल्य (s) पारित हो चुके हैं, उनमें से एक है _token। नीचे उदाहरण की तरह।

<form action="{{ route('process', $id) }}" method="POST">
    @csrf
</form>

public function process(Request $request, $id){
    $request->request->add(['id' => $id]);
}

लेकिन [नीचे कोड] काम नहीं करेगा क्योंकि कोई मूल्य नहीं है, यह वास्तव में जोड़ नहीं है।

<a href='{{ route('process', $id) }}'>PROCESS</a>

public function process(Request $request, $id){
    $request->request->add(['id' => $id]);
}


जीईटी पद्धति का उपयोग करते समय आप या तो अनुरोध की घोषणा कर सकते हैं और उस पर सीधे मूल्य प्रदान कर सकते हैं। नीचे की तरह:

public function process($id){
    $request = new Request(['id' => $id]);
}

या आप उपयोग कर सकते हैं merge। यह वास्तव में बेहतर है $request->request->add(['variable' => 'value']);क्योंकि यह सभी तरीकों के लिए काम कर सकता है और अनुरोध मानों को जोड़ सकता है ( GET , POST , PUT , DELETE )

public function process(Request $request, $id){
    $request->merge(['id' => $id]);
}

टैग: laravel5.8.11


2

मैंने अपने अनुरोध में कुछ जोड़ने के लिए इस कोड का उपयोग किया।

$req->query->add(['key'=>'variable']);
$req->request->add(['key'=>'variable']);

2

आप सीधे अनुरोध सरणी तक पहुंच सकते हैं $request['key'] = 'value';


2

मैंने जिस पर सबसे अच्छा प्रयोग किया है और उस पर शोध किया है, वह $ अनुरोध है-> मर्ज ([]) (मेरे टुकड़े की जाँच करें):

    public function index(Request $request) {
        not_permissions_redirect(have_premission(2));
        $filters = (!empty($request->all())) ? true : false;
        $request->merge(['type' => 'admin']);
        $users = $this->service->getAllUsers($request->all());
        $roles = $this->roles->getAllAdminRoles();
        return view('users.list', compact(['users', 'roles', 'filters']));
    }

सूचकांक फ़ंक्शन के अंदर लाइन # 3 की जांच करें।


0

आप एक मिडलवेयर से अनुरोध करने के लिए पैरामीटर जोड़ सकते हैं:

public function handle($request, Closure $next)
{
    $request->route()->setParameter('foo', 'bar');
    return $next($request);
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.