Laravel Framework এ Requests কি?
যদিও ওয়েব দুনিয়ায় Request বিষয়টি ব্যাপক ভাবে ব্যবহৃত হয়, এক কথায় বলা যায় , ক্লায়েন্ট বা ইউজার পিসি থেকে সার্ভার পিসিতে যখন কোনো কিছু চাওয়া হয় , তখন আমরা তাকে বলি Requests. Larvel Framework এ সবধরণের Request গুলো Illuminate\Http\Request Class এর মাধ্যমে হ্যান্ডলিং করা হয়। এই পর্বে আমরা Laravel Framework এর Request গুলো receive করার পদ্ধতি গুলো দেখব।
পূর্ব প্রস্তুতি :
Laravel Framework এ Request এবং Response গুলো বুঝার জন্য আমরা আলাদা ভাবে একটা Route define করব এবং একটা Controller তৈরী করব, চলুন প্রথমে আমরা /getrequest url এবং requestController point করার জন্য routes/web.php তে আমাদের route defina করি :
Route::get('/getrequest', '[email protected]');
এবার আমরা CLI তে আমাদের requestController টি তৈরী করব:
php artisan make:controller requestController
সব কিছু ঠিক থাকলে আপনার CLI নিচের মত ফলাফল দেখাবে :
এখন আপনার app/Http/Controllers ফোল্ডারে requestController.php file এ নিচের মত কোড গুলো দেখতে পাবেন।
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class requestController extends Controller { // }
এখন আমরা সব Request গুলো নিয়ে কাজ করার জন্য আমাদের CLI Controller এ আমাদের index Method এর Parameter এ Request Class এর Object Receive করব। আমাদের index মেথড সহ requestController টি দেখতে নিচের মত হবে:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class requestController extends Controller { public function index(Request $request){ } }
Laravel Framework এ request নিয়ে কাজ করার জন্য আমাদের সব ধরণের প্রস্তুতি শেষ, এখন আমরা ধাপে ধাপে সব ধরণের request দেখবো।
Laravel Framework এ Controller থেকে কিভাবে input request গুলো receive করব?
Laravel Framework এ Controller থেকে request class এর all() method দিয়ে আপনি সব request একসাথে receive করতে পারেন। আবার $request object এর input() Method এর মাধ্যমে প্রত্যেকটি input আলাদা আলাদা receive করতে পারেন। আপনার requestController এর index মেথড এ নিচের মত কোডটি লিখুন :
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class requestController extends Controller { public function index(Request $request){ echo "<pre>"; print_r($request->all()); echo $request->input('name'); echo "</pre>"; } }
যেহেতু আপনি আপনার route এ requestController এর index method এর জন্য path হিসেবে /getrequest define করেছেন , এখন আপনি আপনার URL এ নিচের মতো করে যেকোনো request পাঠালে index মেথড সব receive করবে:
http://localhost:8000/getrequest?name=Masud Alam&age=39
এখন আপনি আপনার ব্রাউজার এ নিচের মত ফলাফল দেখতে পাবেন:
Laravel Framework এ সরাসরি route থেকে input request গুলো receive করা যাবে?
অবশ্যই করা যাবে, তবে তার জন্য আপনাকে Route এর মধ্যেও Request class টি ব্যবহার করতে হবে। আর বাকি সব আমাদের উপরের করা controller class এর কোডের মতোই। আপনার Route এ নিচের মতো করে কোড গুলো আপডেট করে নিন :
use Illuminate\Http\Request; Route::get('/getrequest', function(Request $request){ echo "<pre>"; print_r($request->all()); echo $request->input('name'); echo "</pre>"; });
যেহেতু আমরা আমাদের route এ path হিসেবে /getrequest define করেছি , এখন আপনি আপনার URL এ নিচের মতো করে যেকোনো request পাঠালে index মেথড সব receive করবে:
http://localhost:8000/getrequest?name=Masud Alam&age=39
এখন আপনি আপনার ব্রাউজার এ নিচের মত ফলাফল দেখতে পাবেন:
Laravel Framework এ Controller থেকে কিভাবে url path receive করব?
Laravel Framework এ Controller থেকে request class এর url() method দিয়ে আপনি শুধু url receive করতে পারেন। আবার $request object এর fullUrl() Method এর মাধ্যমে full URL receive করতে পারেন। আপনার requestController এর index মেথড এ নিচের মত কোডটি লিখুন :
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class requestController extends Controller { public function index(Request $request){ echo "<pre>"; echo $request->url(); echo "\n"; echo $request->fullUrl(); echo "</pre>"; } }
আপনার route এ নিম্নের মতো করে আপডেট করে নিন :
Route::get('/getrequest', '[email protected]');
যেহেতু আপনি আপনার route এ requestController এর index method এর জন্য path হিসেবে /getrequest define করেছেন , এখন আপনি আপনার URL এ নিচের মতো করে যেকোনো request পাঠালে index মেথড URL দুই ভাবে অর্থাৎ শুধু URL এবং input সহ URL receive করবে :
http://localhost:8000/getrequest?name=Masud Alam&age=39
এখন আপনি আপনার ব্রাউজার এ নিচের মত ফলাফল দেখতে পাবেন:
Laravel Framework এ সরাসরি route থেকে URL Path receive করা যাবে?
অবশ্যই করা যাবে, তবে তার জন্য আপনাকে Route এর মধ্যেও Request class টি ব্যবহার করতে হবে। আর বাকি সব আমাদের উপরের করা controller class এর কোডের মতোই। আপনার Route এ নিচের মতো করে কোড গুলো আপডেট করে নিন :
use Illuminate\Http\Request; Route::get('/getrequest', function(Request $request){ echo "<pre>"; print_r($request->url()); echo $request->fullUrl(); echo "</pre>"; });
যেহেতু আমরা আমাদের route এ path হিসেবে /getrequest define করেছি , এখন আপনি আপনার URL এ নিচের মতো করে যেকোনো request পাঠালে আপনার route নিজেও URL Path receive করতে পারবে:
http://localhost:8000/getrequest?name=Masud Alam&age=39
এখন আপনি আপনার ব্রাউজার এ নিচের মত ফলাফল দেখতে পাবেন:
Laravel Framework এ Controller থেকে কিভাবে url এর segment গুলো receive করব?
Laravel Framework এ Controller থেকে request class এর segment() method দিয়ে আপনি url এর segment গুলো receive করতে পারেন। আপনার requestController এর index মেথড এ নিচের মত কোডটি লিখুন :
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class requestController extends Controller { public function index(Request $request){ echo "Welcome ".$request->segment(2). " You're ".$request->segment(3). " years old"; } }
আপনার route এ নিম্নের মতো করে আপডেট করে নিন :
Route::get('/getrequest/{name}/{age}', '[email protected]');
যেহেতু আপনি আপনার route এ requestController এর index method এর জন্য path হিসেবে /getrequest define করেছেন , এখন আপনি আপনার URL এ নিচের মতো করে যেকোনো request পাঠালে index মেথড এ URL segment গুলো প্রত্যেকটি আলাদা ভাবে receive করতে পারবেন
http://localhost:8000/getrequest/Masud Alam/35
এখন আপনি আপনার ব্রাউজার এ নিচের মত ফলাফল দেখতে পাবেন:
Laravel Framework এ সরাসরি route থেকে URL Segment receive করা যাবে?
অবশ্যই করা যাবে, তবে তার জন্য আপনাকে Route এর মধ্যেও Request class টি ব্যবহার করতে হবে। আর বাকি সব আমাদের উপরের করা controller class এর কোডের মতোই। আপনার Route এ নিচের মতো করে কোড গুলো আপডেট করে নিন :
use Illuminate\Http\Request; Route::get('students/{name}/{age}', function(Request $request) { echo "Welcome ".$request->segment(2). " You're ".$request->segment(3). " years old"; });
যেহেতু আমরা আমাদের route এ path হিসেবে /students define করেছি , এখন আপনি আপনার URL এ নিচের মতো করে যেকোনো request পাঠালে আপনার route নিজেও URL Segment গুলো receive করতে পারবে:
http://localhost:8000/students/Masud Alam/39
এখন আপনি আপনার ব্রাউজার এ নিচের মত ফলাফল দেখতে পাবেন: