آموزش لاراول گام به گام پروژه محور؛ از نصب تا CRUD کامل با انواع ورودی
لاراول (Laravel) بدون شک محبوبترین فریمورک پیاچپی در سال های اخیر است. زیبایی کدنویسی، ابزارهای قدرتمند و جامعهی بزرگ، آن را به انتخاب اول بسیاری از توسعهدهندگان تبدیل کرده است. در این آموزش، یک پروژهی عملی و گامبهگام را پیش می بریم که شامل انواع ورودیهای فرم (متن، رادیویی، چکباکس و سلکتباکس) و عملیات اصلی CRUD (ایجاد، خواندن، بروزرسانی و حذف) در دیتابیس MySQL می شود. این آموزش برای مبتدیانی که تازه با لاراول آشنا شده اند، کاملا مناسب است. با نسخهی ۵.۵ لاراول پیش می رویم، اما مفاهیم برای نسخههای جدیدتر نیز تقریبا یکسان است.
پیشنیازهای نصب و اجرای لاراول
قبل از شروع، مطمئن شوید که سرور یا سیستم محلی شما دارای موارد زیر است:
- PHP نسخهی ۷.۰ یا بالاتر (ترجیحا ۷.۲ یا ۷.۳)
- افزونهی OpenSSL برای ارتباطات امن
- افزونهی PDO برای اتصال به پایگاه داده
- افزونهی Mbstring برای مدیریت رشتههای چندبایتی
- افزونهی Tokenizer برای تحلیل کد
- افزونهی XML برای پردازش دادههای XML
- کامپوزر (Composer) برای مدیریت وابستگیها
اگر از XAMPP یا WAMP استفاده می کنید، معمولا این افزونهها به صورت پیشفرض فعال هستند. در غیر این صورت، می توانید آنها را در فایل php.ini فعال کنید.
مرحلهی اول: نصب فریمورک لاراول با کامپوزر
برای ایجاد یک پروژهی جدید لاراول، از دستور زیر در ترمینال یا خط فرمان استفاده کنید:
composer create-project –prefer-dist laravel/laravel coins
این دستور، جدیدترین نسخهی پایدار لاراول را در پوشهای به نام coins نصب میکند. اگر میخواهید نسخهی مشخصی مانند ۵.۵ را نصب کنید، از دستور زیر استفاده نمایید:
composer create-project –prefer-dist laravel/laravel=5.5.* coins
پس از اتمام نصب، وارد پوشهی پروژه شوید:
cd coins
ساختار پوشهها شامل app، config، database، resources، routes و سایر بخشهای استاندارد لاراول است. همهچیز برای شروع آماده می باشد.
مرحلهی دوم: راهاندازی دیتابیس MySQL و تنظیمات فایل .env
حالا باید یک دیتابیس در MySQL ایجاد کنید و تنظیمات اتصال را در فایل .env پروژه وارد نمایید. فایل .env در ریشهی پروژه قرار دارد و تمام تنظیمات محیطی را شامل میشود.
ابتدا در phpMyAdmin یا خط فرمان MySQL، یک دیتابیس جدید به نام laravel_coins بسازید (یا هر نام دیگری که دوست دارید). سپس فایل .env را باز کرده و بخش مربوط به دیتابیس را به شکل زیر تنظیم کنید:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_coins
DB_USERNAME=root
DB_PASSWORD=your_password
اگر از XAMPP استفاده می کنید، معمولا DB_PASSWORD خالی است. پس از ذخیرهی تغییرات، لاراول میتواند به دیتابیس شما متصل شود.
مرحلهی سوم: ایجاد مدل (Model) و مهاجرت (Migration) برای جدول سکهها
در این پروژه، قصد داریم اطلاعات سکههای قدیمی یا کالکسیونی را مدیریت کنیم. هر سکه دارای مشخصاتی مثل نام، کشور، سال ضرب، قیمت، وضعیت (نو یا دستهدوم) و توضیحات است. برای این کار، یک مدل به نام Coin و یک مهاجرت مربوط به آن ایجاد میکنیم.
دستور زیر را در ترمینال اجرا کنید:
php artisan make:model Coin -m
پرچم -m به معنای ایجاد فایل مهاجرت (migration) همراه با مدل است. حالا فایل مهاجرت را در پوشهی database/migrations باز کنید و تابع up() را به شکل زیر تکمیل کنید:
public function up()
{
Schema::create(‘coins’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘name’);
$table->string(‘country’);
$table->integer(‘year’);
$table->decimal(‘price’, 8, 2);
$table->enum(‘condition’, [‘new’, ‘used’])->default(‘new’);
$table->text(‘description’)->nullable();
$table->timestamps();
});
}
سپس مهاجرت را اجرا کنید تا جدول در دیتابیس ساخته شود:
php artisan migrate
مرحلهی چهارم: ساخت کنترلر (Controller) با متدهای CRUD
برای مدیریت عملیات مربوط به سکهها، یک کنترلر از نوع Resource ایجاد میکنیم که تمام متدهای استاندارد (index, create, store, show, edit, update, destroy) را داشته باشد:
php artisan make:controller CoinController –resource
حالا فایل app/Http/Controllers/CoinController.php را باز کنید. متدهای index (نمایش لیست)، create (نمایش فرم ایجاد)، store (ذخیرهی جدید)، edit (نمایش فرم ویرایش)، update (بروزرسانی) و destroy (حذف) را به ترتیب تکمیل میکنیم.
مثلا متد store که دادههای فرم را دریافت و در دیتابیس ذخیره میکند، به این شکل خواهد بود:
public function store(Request $request)
{
$request->validate([
‘name’ => ‘required|max:255’,
‘country’ => ‘required|max:100’,
‘year’ => ‘required|integer|min:1800|max:2026’,
‘price’ => ‘required|numeric|min:0’,
‘condition’ => ‘required|in:new,used’,
‘description’ => ‘nullable|string’,
]);Coin::create($request->all());
return redirect()->route(‘coins.index’)
->with(‘success’, ‘سکه با موفقیت اضافه شد.’);
}
متدهای دیگر نیز به همین ترتیب پیادهسازی میشوند. برای نمایش لیست از Coin::all() و برای ویرایش از Coin::findOrFail($id) استفاده کنید.
مرحلهی پنجم: تعریف مسیرها (Routes) در فایل web.php
فایل routes/web.php را باز کنید و یک مسیر Resource برای کنترلر سکهها تعریف نمایید:
Route::resource(‘coins’, ‘CoinController’);
این یک خط کد، تمام مسیرهای مورد نیاز برای CRUD را به صورت خودکار ایجاد می کند. برای مشاهدهی لیست مسیرها، میتوانید از دستور php artisan route:list استفاده کنید.
مرحلهی ششم: ساخت ویوها (Views) با انواع ورودیهای فرم
حالا نوبت به بخش ظاهری و تعامل با کاربر میرسد. در پوشهی resources/views، یک پوشه به نام coins بسازید و فایلهای زیر را ایجاد کنید:
۱. فایل index.blade.php برای نمایش لیست سکهها
۲. فایل create.blade.php برای فرم افزودن سکهی جدید
۳. فایل edit.blade.php برای فرم ویرایش سکه
در فایل create.blade.php، یک فرم با متد POST و action مربوط به مسیر coins.store میسازیم. برای نمایش انواع ورودیها از موارد زیر استفاده میکنیم:
فیلد متنی (text) : برای نام و کشور
فیلد عددی (number) : برای سال و قیمت
دکمهی رادیویی (radio) : برای انتخاب وضعیت (نو یا دستهدوم)
چکباکس (checkbox) : مثلا برای تایید شرایط یا فعال بودن
سلکتباکس (select) : برای انتخاب کشور از یک لیست از پیش تعیینشده
نمونهی کد فرم:
<form action=”{{ route(‘coins.store’) }}” method=”POST”>
@csrf
<div>
<label>نام سکه</label>
<input type=”text” name=”name” value=”{{ old(‘name’) }}” required>
</div>
<div>
<label>کشور</label>
<select name=”country” required>
<option value=”ایران”>ایران</option>
<option value=”آمریکا”>آمریکا</option>
<option value=”انگلستان”>انگلستان</option>
</select>
</div>
<div>
<label>سال ضرب</label>
<input type=”number” name=”year” value=”{{ old(‘year’) }}” required>
</div>
<div>
<label>قیمت (دلار)</label>
<input type=”number” step=”0.01″ name=”price” value=”{{ old(‘price’) }}” required>
</div>
<div>
<label>وضعیت</label>
<input type=”radio” name=”condition” value=”new” checked> نو
<input type=”radio” name=”condition” value=”used”> دستهدوم
</div>
<div>
<label>توضیحات</label>
<textarea name=”description”>{{ old(‘description’) }}</textarea>
</div>
<div>
<input type=”checkbox” name=”agree” value=”۱″ required> من تایید میکنم
</div>
<button type=”submit”>ذخیره</button>
</form>
مرحلهی هفتم: پیادهسازی عملیات CRUD کامل
نمایش لیست (index) : تمام سکهها را از دیتابیس میخوانیم و در یک جدول نمایش میدهیم. هر ردیف شامل دکمههای ویرایش و حذف است.
افزودن (store) : دادههای فرم را پس از اعتبارسنجی در دیتابیس ذخیره کرده و به صفحهی لیست بازمیگردیم.
ویرایش (edit/update) : فرم ویرایش را با دادههای موجود پر میکنیم و پس از بروزرسانی، پیام موفقیت نشان میدهیم.
حذف (destroy) : با یک درخواست DELETE، رکورد مورد نظر را حذف میکنیم (با استفاده از فرم متد @method(‘DELETE’) و تایید کاربر).
مرحلهی هشتم: اعتبارسنجی (Validation) و نمایش پیامهای خطا
لاراول اعتبارسنجی را بسیار آسان کرده است. در متد store و update، قوانین اعتبارسنجی را تعریف میکنیم و در ویو، خطاها را با دستور @error(‘field_name’) نمایش میدهیم:
@error(‘name’)
<div class=”alert alert-danger”>{{ $message }}</div>
@enderror
همچنین برای نمایش پیام موفقیت بعد از هر عملیات، از with(‘success’, ‘پیام’) در کنترلر و @if(session(‘success’)) در ویو استفاده می کنیم.
مرحلهی نهم: اجرا و تست پروژه
برای اجرای سرور داخلی لاراول، از دستور زیر استفاده کنید:
php artisan serve
سپس در مرورگر، آدرس http://۱۲۷.۰.۰.۱:۸۰۰۰/coins را باز کنید. با این کار لیست سکهها را مشاهده میکنید و میتوانید عملیات افزودن، ویرایش و حذف را تست کنید. همهچیز باید به درستی کار کند.
نکات تکمیلی و بهروزرسانی برای نسخههای جدیدتر
اگر از نسخههای جدیدتر لاراول (مثل ۸، ۹ یا ۱۰) استفاده میکنید، تغییرات جزئی زیر را در نظر داشته باشید:
در فایل routes/web.php به جای Route::resource میتوانید از همان استفاده کنید اما کنترلرها در پوشهی app/Http/Controllers قرار دارند.
اعتبارسنجی میتواند به جای $request->all() با $request->validated() انجام شود.
از قابلیتهای جدید مثل Route::view یا کنترلرهای invokable هم میتوانید بهره ببرید، اما ساختار اصلی کاملا مشابه است.
جمعبندی؛ مسیر یادگیری لاراول را ادامه دهید
تبریک میگویم! شما یک پروژهی کامل CRUD با انواع ورودیهای فرم در لاراول را از صفر تا صد پیادهسازی کردید. با این آموزش، مبانی کار با مدل، کنترلر، ویو، مهاجرت، اعتبارسنجی و مسیرها را به خوبی درک کردید. لاراول دنیای بزرگی دارد و از اینجا میتوانید به سراغ مباحث پیشرفتهتری مثل احراز هویت، API، کش، صفها و آزموننویسی بروید. دژاوو کالج با دورههای عملی و پروژهمحور، همراه شماست تا در این مسیر شیرین به یک توسعهدهندهی حرفهای لاراول تبدیل شوید. اگر سوالی دارید یا به راهنمایی بیشتری نیاز دارید، خوشحال میشویم که پاسخگوی شما باشیم.
دیدگاه شما