# লারাভেল রাউট এবং ভিউ কি ? কিভাবে ভিউ ফাইলের মধ্যে ডাটা পাস করতে হয় ?

##### **লারাভেল রাউট এবং লারাভেল ভিউ সম্পর্কে আজকের আর্টকেল।**

*   একটা প্রশ্ন দিয়েই শুরু করি। ইন্টারনেটে আমাদের ওয়ার্ক সাইকেলটা কেমন হয়?
    
*   প্রথমে আমরা কিছু টাইপ করে URL এ অর্থাৎ সার্চ বারে সার্চ করি। তারপর আমাদের সামনে কিছু কনটেন্ট বা তথ্য চলে আসে। সেই কনটেন্ট গুলিই আমরা দেখতে পাই। তাইতো? তাহলে এবার খেয়াল করুন।
    

**লারাভেল রাউট**

*   লারাভেল এর ভাষায় রাউট হচ্ছে URL । তাহলে একটি URL তৈরী করতে হলে একটি রাউট তৈরী করতে হবে। আর রাউট তৈরি করা হয়ে গেলে ইউজার সেটি লিখে URL এ সার্চ করতে পারবে। সার্চ করলেই কি দেখা যাবে? হ্যাঁ, যদি ভিউ তৈরি করা থাকে তাহলে দেখা যাবে। প্রশ্ন হচ্ছে ভিউ কি?
    

**লারাভেল ভিউ**

*   এপ্লিকেশন বা ওয়েবসাইটে আমরা যা কিছু দেখতে পাই তাই লারাভেল ভিউ। হোম পেইজ একটি ভিউ, ব্লগ পেইজ একটি ভিউ, আবাউট পেইজ একটি ভিউ। এভাবে অনেক অনেক ভিউ তৈরি করতে হয় একটি ওয়েবসাইটের জন্য। এখন প্রশ্ন হলো ভিউ তৈরি করবো কিভাবে?
    
*   এপ্লিকেশনের `resources/views` ডিরেক্টরিতে গিয়ে ফাইল তৈরি করলে ভিউ তৈরি হয়ে যায়। যেমন: `welcome.php`, `blog.php`, `about.php`, `contact.php` ইত্যাদি। এখন এই ভিউ গুলো ব্রাউজ করার জন্য URL অর্থাৎ রাউট তৈরি করতে হবে।
    

**বেসিক রাউটিং**

*   রাউট তৈরি করার জন্য এপ্লিকেশনের `routes` ফোল্ডারের মধ্যে `web.php` ফাইল এর মধ্যে কোড লিখতে হয়। তো চলুন একটি রাউট তৈরি করি।
    

```php
Route::get('/', function() 
{ 
    return view('welcome'); 
});
```

*   এখানে `Route` হচ্ছে ক্লাস এবং `get()` হচ্ছে `Route` ক্লাসের একটি মেথড।
    
*   এখানে `get()` মেথড দুইটি আর্গুমেন্ট গ্রহণ করে। প্রথম আর্গুমেন্ট '/' দ্বারা URL এবং দ্বিতীয় আর্গুমেন্ট ক্লোজার অর্থাৎ ফাংশন গ্রহণ করে।
    
*   প্রথম আর্গুমেন্ট `'/'` এর ফরওয়ার্ড স্লাশ অর্থ হচ্ছে মেইন ডোমেইন অর্থাৎ রুট ডোমেইন এবং দ্বিতীয় আর্গুমেন্ট ফাংশন দ্বারা একশন সম্পাদিত হয়।
    
*   ভিউ মেথড `view()` এর মাধ্যমে `welcome.php` ফাইলের কনটেন্ট দেখা যাবে।
    

**কয়েকটি বেসিক রাউট**

চলুন আরো কিছু রাউট তৈরি করি। ফলে আপনাদের বুঝতে সহজ হবে।

```php
//Route for Blog Page
Route::get('/blog', function() 
{ 
    return view('blog'); 
});
    
     
    //Route for About Page
    
Route::get('/about', function()
{ 
    return view('about'); 
});
    
    
     //Route for Contact Page
    
Route::get('/contact', function()
{ 
    return view('contact'); 
});
```

*   `http://yourDomain .com/blog` লিখে এড্রেসবারে হিট করলে `blog.php` ফাইলের কনটেন্ট শো করবে। আবার `http://yourDomain .com/about` লিখে এড্রেসবারে হিট করলে `about.php` ফাইলের কনটেন্ট শো করবে। তো চলুন একটি উদাহরণ দেখা যাক।
    

**ভিউ ফাইল ব্রাউজারে দেখা**

*   আমরা আগেই জেনেছি যে ভিউ ফাইল গুলো `resources/views` ডিরেক্টরিতে থাকে। আমরা `about.php` ভিউ এর ভেতরে কিছু কন্টেন্ট রাখার জন্য ফাইলটি ওপেন করে একটি হেডিং লিখি।
    

```xml
<html> 
    <body> 
        <h1> শিখুন.নেট ব্লগ থেকে </h1> 
    </body> 
</html>
```

*   এখন এই ভিউ এর জন্য একটি রাউট তৈরি করলেই URL কাজ করবে। about পেজের রাউট টি আবার লিখি।
    

```php
Route::get('/about', function()
{ 
    return view('about'); 
});
```

*   এখন যদি http://yourDomain .com/about লিংক ব্রাউজ করে তাহলে "শিখুন.নেট ব্লগ থেকে" টেক্সট টি দেখতে পাবেন।
    

**ভিউ ফাইলের মধ্যে ডাটা পাস করা**

*   ভিউ ফাইলের মধ্যে ডাটা পাস করার জন্য মেথডের দ্বিতীয় প্যারামিটার এর প্রয়োজন হয়। দ্বিতীয় প্যারামিটারে `array` পাস করতে হয়।
    

```php-template
<html> 
    <body> 
        <h1> My Name is <?php echo $name;?> </h1> 
    </body> 
</html>
```

*   এখন এই ভিউ ব্রাউজারে দেখতে হলে নিচের রাউট টি লিখতে হবে।
    

```php
Route::get('/about', function() 
{ 
    return view('about', ['name' => 'Nayem']); 
});
```

**ভিউস ডিরেক্টরির মধ্যে সাব ডিরেক্টরি**

*   ভিউস ডিরেক্টরির মধ্যে সাব-ডিরেক্টরি থাকতে পারে। উদাহরণ হিসেবে বলা যায় আপনি যদি ভিউ ফাইলটিকে নিচের ডিরেক্টরিতে রাখেন: `resources/views/admin/profile.php` তাহলে আপনাকে নিম্নের ন্যায় ভিউ মেথডটিকে কল করতে হবে:
    

```php
Route::get('/about', function() 
{ 
    return view('admin.profile', ['name' => 'Nayem']); 
});
```

**এর মেথড সমূহ**

*   http রিকুয়েস্ট এবং রেসপন্স করার জন্য এই ৬ ধরনের মেথড ব্যবহার করা যায়। এই মেথড গুলো সম্পর্কে যথাযথ জ্ঞান রাখা উচিৎ ।
    

```php
Route::get($uri, $callback);
    
Route::post($uri, $callback);
    
Route::put($uri, $callback);
    
Route::patch($uri, $callback);
    
Route::options($uri, $callback);
    
Route::match ($uri, $callback);
```
