- ১.লারাভেল এর রুট ডিরেক্টরিতে package নামে একটি ফোল্ডার তৈরী করি।
- প্যাকেজ ফোল্ডার এর মধ্যে vendor এর নাম হিসাবে olee নামে একটি ফোল্ডার তৈরী করি
- olee ফোল্ডার এর মধ্যে আমরা যে নামে প্যাকেজ তৈরী করবো সে নামে একটি ফোল্ডার তৈরী করি যেমন sociallink .
- sociallink ফোল্ডার এর মধ্যে src নামে একটি ফোল্ডার তৈরী করি।
- src ফোল্ডার এর মধ্যে cmd ওপেন করে কমান্ড composer init লিখে এন্টার করলে পরবর্তী নির্দেশনা অবলম্বন করলে একটি src ফোল্ডার এ composer.json নামে একটি ফাইল তৈরী হবে
- এবার লারাভেল প্রজেক্ট এর রুট ফোল্ডার এ composer.json নামের ফাইলটি ওপেন করে তাতে আমাদের ভেন্ডর প্যাকেজ টি অ্যাড করি।
"autoload": {
"psr-4": {
"olee\\items\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"olee\\items\\": "packages/olee/items/src"
}
},
"extra": {
"olee": {
"providers": [
"olee\\items\\ItemsServiceProvider"
]
}
}
- এখানে “olee\items হলো ভেন্ডর ও প্যাকেজ এর নাম এই দুইটা আমাদের ভেন্ডর ও নাম অনুযায়ী পরিবর্তন করবো।
- এবার আমাদের সার্ভিস প্রোভাইডার অ্যাড করতে হবে এজন্য লারাভেল প্রজেক্ট এর রুট ফোল্ডার এ cmd তে কমান্ড রান করি php artisan make:provider SocialLinkServiceProvider
- এই কমান্ড আমাদের লারাভেল প্রজেক্ট এর app/Providers ফোল্ডার এ SocialLinkServiceProvider নামে একটি ফাইল তৈরী হবে এটাকে আমরা আমাদের প্যাকেজ ফোল্ডার এর src ফোল্ডার মুভ করে নিয়ে এসব এবং ফাইল টি ওপেন করে এর নেমস্পেস চেঞ্জ করবো। namespace olee\sociallink;
- এবার লারাভেল প্রজেক্ট এর রুট ফোল্ডার এ cmd তে কমান্ড রান করি composer dump-autoload
- SocialLinkServiceProvider ক্লাসটি প্রজেক্ট এর রুট ডিরেক্টরি তে config/app এ প্রোভাইডার ক্লাস অ্যাড করি olee\sociallink\SocialLinkServiceProvider::class,
- src ফোল্ডার এর মধ্যে controllers,views নামে দুইটি ফোল্ডার তৈরী করি।
- আমাদের প্যাকেজ এর src ফোল্ডার এ composer.json আপডেট করি
{
"name": "olee/sociallink",
"description": "Simple Social Link Crud",
"type": "library",
"license": "mit",
"authors": [
{
"name": "Olee Ahmmed",
"email": "oleetechs@gmail.com"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4": {
"olee\\sociallink\\": "packages/olee/sociallink/src"
}
}
}
- প্যাকেজ এর route ডিফাইন করার জন্য routes.php নামে ফাইল তৈরী করি। এবং তার মধ্যে লিখি
<?php
use Illuminate\Support\Facades\Route;
- SocialLinkServiceProvider এর boot এবং রেজিস্টার ফাঙ্কশন এর মধ্যে নিচের মতো হবে।
* Register services.
*
* @return void
*/
public function register()
{
$this->loadViewsFrom(__DIR__.'/views', 'sociallink');
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
include __DIR__.'/routes.php';
}
- এবার আমরা কন্ট্রোলার ফাইল তৈরী করবো cmd তে কমান্ড টাইপ করে কন্ট্রোলার তৈরী করি যা app/Controllers ফোল্ডার এ controller.php কপি করে আমাদের প্যাকেজ এর controllers ফোল্ডার এ রাখবো এবং app/Controllers ফোল্ডার এ আমাদের বানানো কন্ট্রোলার টি মুভ করে আমাদের প্যাকেজ এর controllers ফোল্ডার এ রাখবো এবং নেমস্পেস পরিবর্তন করবো আমাদের প্যাকেজ ভেন্ডর নাম অনুসারে
- controller.php ফাইলের নেমস্পেস হবে এরকম namespace olee\sociallink \Controllers;
- SocialLinkController.php ফাইলের নেমস্পেস হবে এরকম namespace olee\sociallink \Controllers;
- এবার আমাদের কন্ট্রোলার টি routes.php তে অ্যাড করবো
use olee\sociallink\Controllers\SocialLink;
Route::get('/posts', [SocialLinkController::class, 'index'])->name('posts.store');
- Model নিয়ে কাজ করা। কমান্ড এর মাধ্যমে মডেল তৈরী করি যা app/models ফোল্ডার এ একটি মডেল তৈরী করে এবার প্যাকেজ এর src ফোল্ডার এ models নামে ফোল্ডার তৈরী করি এবং কমান্ড দ্বারা বানানো মডেল টি মুভ করে এবার প্যাকেজ এর src ফোল্ডার এ models আন্তে হবে এবং নেমস্পেস পরিবর্তন করি
- sociallink কন্ট্রোলার ফাইল এ মডেলটি অ্যাড করতে হবে use olee\sociallink\Models\SocialLink;
- মডেল ফাইলটি হবে এরকম
<?php
namespace olee\sociallink\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class SocialLink extends Model
{
use HasFactory;
protected $table = "metal_buttons";
protected $fillable = ['title ','description'];
}
কন্ট্রোলার ফাইলটি হবে এরকম
<?php
namespace olee\sociallink\Controllers;
use Illuminate\Http\Request;
use olee\sociallink\Models\SocialLink;
class SocialLinkController extends Controller
{
public function test (){
$data = SocialLink::all();
return $data ;
}
}
মাইগ্রেশন ফাইল অ্যাড করা : প্রথমে মাইগ্রেশন ফাইল তৈরী করে প্যাকেজ এর src ফোল্ডার এর migrations নামে ফোল্ডার তৈরী করে তারমধ্যে মাইগ্রেশন ফাইল রাখতে এবং সার্ভিস প্রোভাইডার এ বুট ফাঙ্কশন এ অ্যাড করতে হবে এভাবে
<?php
namespace olee\sociallink;
use Illuminate\Support\ServiceProvider;
class SocialLinkServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->loadViewsFrom(__DIR__.'/views', 'sociallink');
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
include __DIR__.'/routes.php';
$this->loadMigrationsFrom(__DIR__.'/migrations');
}
}
view ফোল্ডার হতে কন্ট্রোলার এ ভিউ লোড করা:
আমরা ভিউ রেজিস্টার করার সময় সেকেন্ড প্যারামিটার হিসাবে আমাদের ভিউ আইডেন্টিফায়ার হিসাবে items নিয়েছিলাম { $this->loadViewsFrom(DIR.’/views’, ‘items’);
} এবার ভিউ ফোল্ডার এর create.blade.php ফাইল কে কন্ট্রোলার এ এভাবে কল করবো
public function index()
{
return view("items::create");
}