লারাভেল-৫ টিউটোরিয়াল (পর্ব-০৬) :: ডাটা ডিলিট ও ফ্লাস মেসেজের ব্যবহার।

বিভাগ: লারাভেল টুডু অ্যাপ্লিকেশন


আমরা গত পর্বটিতে ডাটা আপডেট করা শিখেছি। আজ আমরা ডাটা ডিলিট করা ও ফ্লাস ম্যাসেজ ব্যবহার করা শিখব। কাজের আগে জেনে নিই ফ্লাস মেসেজটা আসলে কী? যারা জানেন এডিয়ে যেতে পারেন আর যারা জানেন না তাদের জন্য বলছি। ফ্লাস ম্যাসেজ হচ্ছে অ্যাপ্লিকেশনের জন্য এমন একটি মেসেজিং/নটিফিকেশন সিস্টেম যেটির মাধ্যমে অ্যাপ্লিকেশনে কোন একটি ইভেন্ট হলে তা ব্যবহারকারীদের স্ক্রিনে জানানো যায় এবং এটি পেইজ রিফ্রেস করার পর আর দেখা যায় না। একটু উদাহারণ দিয়ে বললে বুঝা যাবে ব্যাপারটা। দরুন আমরা যখন কোন ডাটা ডাটাবেসে ইনসার্ট করছি তার লিস্ট টেবিলে সাজিয়ে দেখতে পারছি কিন্তু ডাটাটি আদৌ ডাটাবেসে ইনসার্ট হলো কিনা তা একজন ইউজার কোন প্রকার মেসেজ পাইনি। আমরা যদি ডাটাটি ডাটাবেসের টেবিলে ইনসার্ট হওয়ার সাথে সাথে ইউজারকে মেসেজের মাধ্যমে জানিয়ে দিই তবে অ্যাপিক্লেশনের ইউজার এক্সপেরিয়ান্স (UX) টা আরো ভাল হয়। এবার আসুন কাজে নেমে পড়ি।

ডাটা ডিলিট করা:

ডাটা ডিলিট করার জন্য ১মে আমাদের home.blade.php ফাইলটিতে প্রতিটি রো'তে একটি করে ডিলিট বাটন যুক্ত করতে হবে এবং এতে ডাইনামিকভাবে রেকর্ড এর আইডি যুক্ত করতে হবে। সাথে এমন ব্যবস্থা করতে হবে যাতে ইউজার ভুলে কোন বাটনে ক্লিক করলে ও যাতে ডাটা সাথে সাথে ডিলিট না হয়। যখন কোন ইউজার ডাটা ডিলিট বাটনে ক্লিক করবে তার থেকে একটি কনফার্ম মেসেজ চাইবে যখন ইউজার ইয়েস দিবে তখন-ই ডাটাটি ডিলিট হবে। বাটনটি যুক্ত ও ইউজার কনফারমেশন যুক্তকরণের জন্য home.blade.php তে ইডিট বাটনের পাশে নিচের মত কোড লিখব।

<form style="display: inline;" action="{{route('deleteTask',$row-&gt;id)}}" method="POST">
<input name="_token" type="hidden" value="{{ csrf_token() }}" /> 
<button class="btn btn-danger" type="submit">Delete</button>
</form>

এখানে একটি deleteTask নামে রাউট দেখতে পাচ্ছি যেটি আমাদের লিখতে হবে। এখন deleteTask নামে রাউটটি রাউট ফাইলে লিখি।

Route::post('/{id}/delete',['as'=>'deleteTask','uses'=>'TodoController@destroy']);

ডাটা ডিলিট করার জন্য আমাদের রাউট ও বাটন যুক্ত করা শেষ। এখন রাউটে যে TodoController এর যে destroy ম্যাথড উল্লেখ করেছি তাতে কোড লিখতে হবে।

public function destroy($id)
	{
		$response=Task::find($id)->delete();
		if($response)
		{
			return redirect('/')->with('success','Task deleted successfully');
		}
	} 

এইখানে ডাইনামিকভাবে যে আইডিটি আমরা পাঠাচ্ছি তা দিয়ে রেকর্ডটি তলে এনে ডিলিট ম্যাথডটিকে কল করলেই। রেকর্ডটি মুছে যাবে। এখন এই অপারেশনটি সফলভাবে যে হল তা বুঝানোর জন্য একটি ফ্লাস মেসেজ পাঠাবো। উপরোক্ত কোডে with ম্যাথডটি দিয়ে আমরা ফ্লাস মেসেজ পাঠাচ্ছি। যেখানে প্রথম প্যারামিটারটি key যেটি আমরা যেখানে মেসেজটি দেখাতে চাই সেখানে কল করে দেখাবো। আর অন্য প্যারামিটারটি হলে মেসেজ যেটি ইউজার দেখবে।

আমরা যেকোন সাকসেস ম্যাসেজ ফ্লাস ম্যাসেজ দিয়ে দেখাতে home.blade.php ফাইলে বুটস্ট্রাপের একটি সাকসেস এলার্ট ইউজ করব। নিচের মত করে সাকসেস ম্যাসেজ দেখাতে কোড লিখব।

@if (Session::has('success'))
<div class="alert alert-success">
<a class="close" href="#" data-dismiss="alert">&times;</a> {{ Session::get('success') }}
</div>
 @endif

এখানে আমরা আগে সেশনে success নামে কোন কী আছে কিনা তা চেক করছি। অত:পর যদি পাওয়া যায় তবে তা একটি বুটস্ট্রাপ এলার্টের ম্যাধ্যমে দেখাচ্ছি। এখন থেকে আমরা কোন সাকসেস ম্যাসেজ পাঠাতে with method দিয়ে success key দিয়ে পাঠাতে পারব। এখন পেইজ রিফ্রেস দিয়ে একটি রেকর্ড ডিলিট করে দেখুন। দেখবেন ডাটা ডিলিট হবে এবং তার সাথে সাথে একটি সাকসেস ম্যাসেজ দেখা যাবে যা আমরা কন্ট্রোলার হতে পাস করছি।

ধন্যবাদ সাথে থাকার জন্য। টিউটোরিয়ালগুলো ভাল লাগলে অবশ্যই অন্যদের সাথে শেয়ার করবেন। সবাই ভাল থাকবেন।


এই রকম আরো পোষ্ট