লারাভেল একটি অনুরোধ অ্যারে মান যোগ করার উপায় আছে


109

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

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 আপনি যে ধরণের জিনিসটি সন্ধান করছেন এটি যদি তা না হয় তবে আপনি কি আপনার প্রশ্নের জন্য আরও তথ্য সরবরাহ করতে পারবেন?
হামারবট

$ অনুরোধটি পিএইচপি অবজেক্ট, আমার বুঝতে হিসাবে, আপনি যদি নিয়ামকের পাশে কিছু বৈশিষ্ট্য যুক্ত করতে চান, অনুরোধটিকে একটি অ্যারেতে রূপান্তর করতে চান তবে আপনি যা চান তা যুক্ত করুন
চতুরা হেটেয়ারাচ্চি

উত্তর:


199

সাধারণত, আপনি কোনও অনুরোধের বস্তুতে কোনও কিছু যুক্ত করতে চান না, সংগ্রহ এবং 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

4
হ্যাঁ এটি এখন আমার জন্য কাজ করছে আমি কোডটি ফাংশন স্টোর হিসাবে পরিবর্তন করেছি (অনুরোধ $ অনুরোধ) {// কিছু অতিরিক্ত যুক্তি বা পরীক্ষণ $ পরিকল্পনা = 123; // ব্যবহারকারীর পরিকল্পনা সিদ্ধান্ত নেওয়ার জন্য কিছু যুক্তি $ অনুরোধ-> অনুরোধ-> যোগ করুন (['পরিকল্পনা' => $ পরিকল্পনা]); ব্যবহারকারী :: তৈরি ($ অনুরোধ-> সমস্ত ()); }
বিজয়ানন্দ প্রেমনাথ

4
এটি কাজ করে না কারণ $ অনুরোধ-> সমস্ত () একটি অ্যারে যা সংগ্রহ নয়।
kjdion84

4
আমার ধারণা এটি অবশ্যই $ অনুরোধ-> অনুরোধ-> অ্যাড (['পরিবর্তনশীল' => 'মান']) হওয়া উচিত;
সের্গে ওনিশচেঙ্কো

$ অনুরোধ-> অনুরোধ-> যোগ করুন ... আমি ত্রুটি বার্তা পেয়েছি 「অপরিজ্ঞাত পরিবর্তনশীল: অনুরোধ」 তবে আমার 「ব্যবহার আলোকিত \ এইচটিটিপি \ অনুরোধ; had কেন আমি ত্রুটি বার্তা পেয়েছি?
রোপসিন

আমার কি দরকার $ অনুরোধ = সংগ্রহ (); প্রথম? $ একটি সংগ্রহ বা অ্যারে পুনরায় অনুসন্ধান করা হয়?
রোপসিন

56

Alexey Mezeninউত্তর উল্লেখ :

তার উত্তরটি ব্যবহার করার সময়, আমাকে অনুরোধের অবজেক্টে সরাসরি কিছু যুক্ত করতে এবং ব্যবহার করতে হয়েছিল:

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

এটি ব্যবহার করে এটি দুটি ভেরিয়েবল যুক্ত করে:

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

আপনি যদি আমার মতো নবাগত হন এবং আপনার কোনও সহযোগীর অ্যারের দরকার হয় তা করার সঠিক উপায়

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

আশা করি আমি আপনার কিছুটা সময় সাশ্রয় করেছি

পিএস: আপনাকে ধন্যবাদ @Alexey, আপনি আপনার উত্তর দিয়ে আমাকে সত্যই সাহায্য করেছেন


$ অনুরোধ-> অনুরোধ-> যোগ করুন ... আমি ত্রুটি বার্তাটি পেয়েছি 「অপরিজ্ঞাত ভেরিয়েবল: অনুরোধ「 তবে আমার had ব্যবহার আলোকিত \ এইচটিটিপি \ অনুরোধ; had কেন আমি ত্রুটি বার্তা পেয়েছি?
রোপসিন

@ রৌপসিন, আমি মনে করি এটি বেশ দেরি হয়ে গেছে, তবে আপনি সম্ভবত ফাংশনটিতে অনুরোধটি ইনজেকশান করেন নি: ফাংশন (অনুরোধ $ অনুরোধ)
মুশুদ বাদুল্ল

4
আপনারা যারা সন্ধান করছেন তারা কেন আপনার মানটি ডাটাবেসে প্রবেশ করায় না কেন যেহেতু আমি আমার Modelক্লাসে ডাটাবেসের সেই মানটি ঘোষণা করি নি :protected $fillable = ['slug'];
fWd82


16

লারাভেল 5.6 এ আমরা মিডলওয়্যারের মধ্যে পরামিতিগুলি পাস করতে পারি:

ফার্স্টমিডলওয়্যার

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

সেকেন্ডমিডওয়্যার

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

4
সেই $request->merge()পদ্ধতি এফটিডাব্লু! ধন্যবাদ
মার্টিন জয়েনার

16

এই বিষয়ে যথেষ্ট বলেছেন তবে আমি নিজের উত্তর যুক্ত করতে প্রতিরোধ করতে পারিনি। আমি বিশ্বাস করি সহজতম পদ্ধতিটি

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

14

আপনি নীচে কোড ব্যবহার করতে পারেন

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

আমার জন্য ভাল ফিট।


কমপক্ষে লারাভেল 5.6 এর সাথে এটি এভাবেই হয়! দুর্দান্ত উত্তর
রকিন

4

প্রাক্তনটির জন্য একটি নতুন প্যারামিটার যুক্ত করতে: newParamবর্তমান Requestঅবজেক্টটিতে আপনি এটি করতে পারেন:

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

নতুন প্যারামিটার যুক্ত করার পরে, আপনি এই অনুরোধের অনুরোধটিতে নতুন যুক্ত হওয়া প্যারামিটারটি দেখতে পাবেন:

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

2

আমি আমার অনুরোধে কিছু যুক্ত করতে এই কোডটি ব্যবহার করেছি।

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

2

আপনি সরাসরি অনুরোধ অ্যারে দিয়ে অ্যাক্সেস করতে পারেন $request['key'] = 'value';


2

আমার পর্যবেক্ষণের ভিত্তিতে :

$request->request->add(['variable' => 'value']);(বেশিরভাগ) পোষ্ট, পুট এবং মুছে ফেলা পদ্ধতিগুলিতে কাজ করবে, কারণ সেখানে মান (গুলি) পাস হয়েছে, এর মধ্যে একটি _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]);
}

ট্যাগ: লারাভেল ৫.৮.১১


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 দেখুন Check


0

আপনি মিডলওয়্যারের অনুরোধে প্যারামিটারগুলি যুক্ত করে যোগ করতে পারেন:

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

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