ক্লাস নং-৫||crud operation,লারাভেল নোটিফিকেশন প্যাকেজ .
==========================================

ক্লাস নং-৫||crud operation,লারাভেল নোটিফিকেশন প্যাকেজ . ==========================================

\==>লারাভেল এর crud operation,লারাভেল নোটিফিকেশন প্যাকেজ এর আজকের ক্লাস ইডিট এবং ডিলিট নিয়ে , এবং form ভেলিডেশন অর্থাৎ আপনার ইনপুট ফিল্ডে কোন ডেটা না দিয়ে সাবমিট করলে সেটি ইউজার কে ইরর দেখাবে।

***প্রথমেই আপনি আপনার ব্যাসিক ভাবে লারাভেল insatall করে নেবেন,stater kit download করে নিবেন,ডেটাবেইজ কনফিগারেশন করে নিবেন।

php-flasher.io/docs/installation

এই ওয়েবসাইটে গিয়ে আপনি আপনার প্রজেক্ট এর জন্য laravel এর command টা কপি করে আপনার কমান্ড প্রমট এ রান করবেন।

composer require php-flasher/flasher-laravel

প্রজেক্ট সেটাপ হয়ে গেলে আপনি টেস্ট করে দেখতে পারেন আপনার সাইটে ফ্লাশার চলছে কি না ।এর জন্য

$flasher->addSuccess('Post created Successfully');

এই কোড টি ফাংশনের মধ্যে দেবেন এবং function এর parameter এ FlasherInterface $flasher এটা দেবেন।

এবার আসি গতক্লাসের create,read পর্যন্ত প্রোজেক্ট নিয়ে।এবং গতক্লাসের টাস্ক ছিল অন্য একটি রাউট তৈরি করে dashboard এর ডেটা গুলোকে posts route

এ পাঠানোর ।

আজকের ক্লাসে প্রথমেই আপনাকে edit-post.blade.php file টা খুলতে হবে এবং Edit এর জন্য title and content এর কোড লিখতে হবে যা createed file এই আছে আপনি বুঝে বুঝে কপি করতে পারেন অথবা আজকের ক্লাসের ভিডিও দেখেও সেটি করতে পারেন।

রাউট তৈরি করাঃ

==========

আপনার web.php file এ গিয়ে সুন্দর করে আপনার edit-post.blade.php file এর জন্য একটি রাউট তৈরি করবেন।এবং অবশ্যই এটি get route হবে

Route::get('/edit-post/{id}', [PostController::class, 'edit'])->name('edit-post');

\=>{id} এই id টা স্পেসিফিক ভাবে যেই পোস্ট ইডিট করবেন সেখানে যাবে ।এবং এখানেই আপডেট এর জন্য এবং ডিলিট এর জন্য রাউট তৈরি করবেন।

Route::post('/update-post/{id}', [PostController::class, 'update'])->name('update-post');

Route::post('/delete-post/{id}', [PostController::class, 'delete'])->name('delete-post');

ব্যাস এবার আপনি আপনার POSTCONTROLLER E গিয়ে সুন্দর মত আপনার EDIT UPDATE AND DELETE FUNCTION টা লিখে ফেলুন।

//EDIT FUNCTION

public function edit($id, FlasherInterface $flasher){

$post = Post::find($id );

//alternative solution for warning to user

if(empty($post)){

$flasher->addError('Post not found');

return redirect()->route('dashboard');

}

return view('posts.edit-post',[

'post' =>$post,

]);

}

UPDATE FUNCTION

\================

public function update($id,Request $request, FlasherInterface $flasher){

$post = Post::findOrFail($id);

//form validation

$request->validate([

'title' =>'required',

'content' => 'required',

]);

$post->title = $request->title;

$post->content = $request->content;

$post->save();

$flasher->addSuccess('Post Updated Successfully');

return redirect()->route('dashboard');

}

DELETE FUNCTION

\===============

public function delete($id,Request $request, FlasherInterface $flasher){

$post = Post::findOrFail($id);

$post->delete();

$flasher->addSuccess('Post delete Successfully');

return redirect()->route('dashboard');

}

এখানে একটা বিষয় post খুজে পেয়েছে কি না এজন্য shoortcut হিসেবে

findOrFail($id); এটা ব্যাবহার করা যেতে পারে অথবা flasher দিয়ে।

এরপর আপনার EDIT-POST.BLADE.PHP FILE এর মধ্যে অবশ্যই আপনি
  • ১।মেথড দেবেন,

  • ২।$post->title,$post->id টা দেবেন।

  • {{ route('update-post',$post->id) }}

আর ডিলিট এর জন্য আপনি এই ফর্ম টা ব্যাবহার করতে পারেন।

<form method="POST" action="{{ route('delete-post',$post->id)}}">

@csrf

<button class="ml-2 text-white text-xs bg-red-500 rounded px-4">delete</button>

</form>

বিঃদ্রঃ-আপনারা অনেকেই একটা ভূল করতেছেন সেটা হল যদি কোন ক্লাস অন্য কোন ফাইলের মধ্যে ব্যাবহার করি তবে সেই ক্লাস টা আমরা সবার উপরে import করে নেব।

অনেকের সাজেশন আসে IMPORT এর অনেকের আসে না।যাদের আসে না তারা কোড করে লিখে নেবেন।

\==>এই ক্লাস IMPORT করা নিয়ে যদি কোন প্রশ্ন থাকে অবশ্যই জানাবেন একটা গুছিয়ে আর্টিকেল লিখব।

আর হ্যা অবশ্যই ।

  • php artisan serve

  • npm run dev

এই দুই টা ভিন্ন ভিন্ন কমান্ড ট্যাবে চালু করে রাখবেন

npm run dev-->এটা আপনার css কে বাইন্ড করে ফ্রন্টেন্ড এ দেখাবে

php artisan serve-->এটা আপনার ব্রাউজারে প্রজেক্ট রান করবে।

best of luck