اگر مقاله قبلی را مطالعه کرده باشید، با نصب Laravel و آمادهسازی محیط توسعه آشنا شدهاید. حالا زمان آن رسیده است که یک قدم عملیتر برداریم و اولین پروژه Laravel خود را ایجاد کنیم.
در این آموزش قرار نیست فقط یک پروژه خالی بسازیم و آن را اجرا کنیم. از ایجاد پروژه شروع میکنیم و سپس یک صفحه ساده برای آن میسازیم تا با مفهوم Route و View در Laravel نیز به صورت عملی آشنا شوید.
هدف این مقاله این است که در پایان، یک پروژه واقعی Laravel روی سیستم خود داشته باشید که بتوانید در مقالات بعدی آن را توسعه دهید.
در این آموزش چه چیزی میسازیم؟
برای اینکه آموزش کاربردی باشد، یک پروژه ساده با عنوان Laravel Blog ایجاد میکنیم.
در مرحله اول پروژه ما بسیار ساده خواهد بود:
Laravel Blog
│
├── صفحه اصلی
│
├── صفحه درباره ما
│
└── صفحه مقالات
در ادامه کلاستر Laravel میتوانیم همین پروژه را گسترش دهیم و به آن مواردی مانند:
- Database
- Migration
- Model
- Eloquent
- Authentication
- فرمها
- Validation
- پنل مدیریت
- API
اضافه کنیم.
بنابراین پروژهای که در این مقاله ایجاد میکنیم، پایهای برای یادگیری مفاهیم بعدی Laravel خواهد بود.
# پیشنیازهای ساخت پروژه Laravel
قبل از شروع، باید محیط توسعه شما آماده باشد.
حداقل موارد مورد نیاز عبارتاند از:
- PHP
- Composer
- Laravel
- یک ویرایشگر کد مانند VS Code
- مرورگر
برای بررسی PHP:
php -v
برای بررسی Composer:
composer -V
اگر هر دو دستور بدون خطا اجرا شوند، میتوانیم پروژه را ایجاد کنیم.
اگر هنوز Laravel را نصب نکردهاید، ابتدا مقاله نصب Laravel را مطالعه کنید.
# مرحله اول: ایجاد پروژه Laravel
ابتدا ترمینال را باز کنید.
میتوانید به پوشهای بروید که قصد دارید پروژههای Laravel خود را در آن قرار دهید.
برای مثال:
cd Desktop
سپس پروژه را با Composer ایجاد کنید:
composer create-project laravel/laravel laravel-blog
در این دستور:
composer create-project
به Composer میگوید یک پروژه جدید ایجاد کند.
و:
laravel/laravel
پکیج پایه Laravel است.
در نهایت:
laravel-blog
نام پوشه پروژه خواهد بود.
بنابراین پس از اجرای دستور، پوشهای با نام:
laravel-blog
ایجاد میشود.
# مرحله دوم: ورود به پروژه
بعد از پایان نصب، وارد پوشه پروژه شوید:
cd laravel-blog
برای اطمینان از اینکه در مسیر صحیح قرار دارید، میتوانید فایلهای پروژه را مشاهده کنید.
در این مرحله باید فایلهایی مشابه موارد زیر وجود داشته باشند:
app
bootstrap
config
database
public
resources
routes
storage
tests
vendor
artisan
composer.json
.env
در مقاله بعدی کلاستر، ساختار این پوشهها و فایلها را به صورت کامل بررسی خواهیم کرد.
# مرحله سوم: باز کردن پروژه در VS Code
اگر از VS Code استفاده میکنید، میتوانید از داخل پوشه پروژه دستور زیر را اجرا کنید:
code .
با اجرای این دستور، پوشه فعلی به عنوان پروژه در VS Code باز میشود.
اگر دستور code روی سیستم شما فعال نباشد، میتوانید VS Code را به صورت دستی باز کرده و پوشه laravel-blog را انتخاب کنید.
اکنون ساختار پروژه Laravel را در محیط توسعه خود مشاهده میکنید.
# مرحله چهارم: بررسی فایل .env
یکی از فایلهای مهم پروژه:
.env
است.
این فایل برای تنظیمات محیط اجرای برنامه استفاده میشود.
در ابتدای پروژه ممکن است تنظیماتی شبیه این مشاهده کنید:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
مقادیر دقیق میتوانند بر اساس پروژه و محیط شما متفاوت باشند.
در محیط Development معمولاً:
APP_ENV=local
استفاده میشود.
همچنین:
APP_DEBUG=true
باعث میشود در محیط توسعه اطلاعات بیشتری درباره خطاها مشاهده کنید.
اما فعال بودن Debug در محیط Production توصیه نمیشود.
# مرحله پنجم: تولید APP_KEY
اگر APP_KEY پروژه تنظیم نشده باشد، میتوانید دستور زیر را اجرا کنید:
php artisan key:generate
Laravel یک کلید ایجاد کرده و آن را در .env قرار میدهد.
بعد از اجرای موفق دستور، مقدار:
APP_KEY=
پر خواهد شد.
این کلید برای بعضی قابلیتهای رمزنگاری Laravel استفاده میشود و باید در محیط واقعی پروژه به شکل امن مدیریت شود.
# مرحله ششم: اجرای پروژه Laravel
حالا میتوانیم اولین پروژه Laravel خود را اجرا کنیم.
در ریشه پروژه دستور زیر را اجرا کنید:
php artisan serve
Laravel یک سرور توسعه برای شما اجرا میکند.
معمولاً آدرسی مانند:
http://127.0.0.1:8000
در ترمینال نمایش داده میشود.
این آدرس را در مرورگر باز کنید.
اگر صفحه پیشفرض Laravel را مشاهده کردید، پروژه با موفقیت اجرا شده است.
# پروژه Laravel چگونه درخواست مرورگر را دریافت میکند؟
در همین مرحله یک مفهوم مهم وجود دارد.
وقتی مرورگر شما درخواست زیر را ارسال میکند:
http://127.0.0.1:8000/
Laravel باید تصمیم بگیرد که این درخواست به کدام بخش برنامه ارسال شود.
این کار توسط Route انجام میشود.
به زبان ساده:
Browser
↓
Laravel
↓
Route
↓
Application Logic
↓
View
↓
HTML
↓
Browser
فعلاً فقط با بخش Route و View کار میکنیم.
در مقالههای بعدی این مسیر را با Controller و سایر اجزای Laravel توسعه خواهیم داد.
# مرحله هفتم: ساخت اولین Route
فایل:
routes/web.php
را باز کنید.
در پروژه Laravel معمولاً یک Route اولیه وجود دارد.
برای ساخت یک صفحه ساده میتوانیم Route زیر را تعریف کنیم:
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return 'Hello Laravel!';
});
حالا پروژه را دوباره در مرورگر باز کنید:
http://127.0.0.1:8000
باید عبارت زیر را مشاهده کنید:
Hello Laravel!
تبریک!
شما اولین پاسخ را با Laravel ایجاد کردهاید.
# Route چیست؟
Route مشخص میکند وقتی کاربر یک URL مشخص را درخواست میکند، Laravel چه کاری انجام دهد.
مثلاً:
Route::get('/', function () {
return 'صفحه اصلی';
});
یعنی زمانی که کاربر درخواست GET برای / ارسال کند، این کد اجرا شود.
یک مثال دیگر:
Route::get('/about', function () {
return 'درباره ما';
});
حالا اگر کاربر به آدرس:
http://127.0.0.1:8000/about
برود، عبارت:
درباره ما
نمایش داده میشود.
# ساخت چند صفحه ساده در پروژه
حالا میتوانیم پروژه خود را کمی واقعیتر کنیم.
در routes/web.php بنویسید:
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return 'صفحه اصلی وبسایت';
});
Route::get('/about', function () {
return 'درباره ما';
});
Route::get('/articles', function () {
return 'مقالات';
});
اکنون پروژه ما سه مسیر دارد:
| URL | خروجی |
|---|---|
/ | صفحه اصلی |
/about | درباره ما |
/articles | مقالات |
مثلاً:
http://127.0.0.1:8000/about
صفحه درباره ما را نمایش میدهد.
# چرا نباید تمام HTML را داخل Route بنویسیم؟
ممکن است در ابتدای کار وسوسه شوید HTML صفحه را مستقیماً داخل Route قرار دهید.
مثلاً:
Route::get('/', function () {
return '<h1>Hello Laravel</h1>';
});
این روش برای آزمایشهای بسیار ساده قابل استفاده است، اما برای یک پروژه واقعی مناسب نیست.
تصور کنید بخواهیم یک صفحه کامل HTML با:
- Header
- Navigation
- Footer
- CSS
- تصاویر
- لیست مقالات
- فرم
بسازیم.
قرار دادن تمام این کد داخل Route باعث شلوغ شدن و سخت شدن نگهداری پروژه میشود.
Laravel برای حل چنین مسئلهای از View استفاده میکند.
# مرحله هشتم: ساخت اولین View
به پوشه زیر بروید:
resources/views
یک فایل جدید ایجاد کنید:
home.blade.php
داخل آن بنویسید:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<title>Laravel Blog</title>
</head>
<body>
<h1>به Laravel Blog خوش آمدید</h1>
<p>
این اولین صفحه پروژه Laravel من است.
</p>
</body>
</html>
حالا باید Route را تغییر دهیم.
# مرحله نهم: نمایش View از طریق Route
در:
routes/web.php
بنویسید:
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('home');
});
اکنون اگر صفحه اصلی را باز کنید:
http://127.0.0.1:8000
Laravel فایل:
resources/views/home.blade.php
را پیدا کرده و آن را نمایش میدهد.
# چرا view('home') فایل home.blade.php را پیدا میکند؟
Laravel برای Viewها یک قرارداد مشخص دارد.
وقتی مینویسیم:
view('home')
Laravel به دنبال View مربوط به home میگردد.
در این مثال فایل:
resources/views/home.blade.php
است.
پس:
view('home')
به:
resources/views/home.blade.php
اشاره میکند.
پسوند:
.blade.php
به سیستم Template Engine لاراول یعنی Blade مربوط است.
در مقاله جداگانهای در ادامه کلاستر، Blade را به صورت کامل بررسی خواهیم کرد.
# مرحله دهم: ساخت صفحه درباره ما
حالا یک View دیگر بسازید:
resources/views/about.blade.php
محتوای آن:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<title>درباره ما</title>
</head>
<body>
<h1>درباره ما</h1>
<p>
این صفحه درباره پروژه Laravel ما است.
</p>
</body>
</html>
سپس Route مربوط به آن را ایجاد کنید:
Route::get('/about', function () {
return view('about');
});
حالا:
http://127.0.0.1:8000/about
را باز کنید.
# پروژه ما تا اینجا چه ساختاری دارد؟
اکنون پروژه ما تقریباً چنین ساختاری دارد:
laravel-blog/
│
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
│ └── views/
│ ├── home.blade.php
│ └── about.blade.php
│
├── routes/
│ └── web.php
│
├── storage/
├── tests/
├── vendor/
│
├── .env
├── artisan
├── composer.json
└── composer.lock
در این مرحله فقط چند قسمت پروژه را لمس کردهایم.
در مقاله بعدی، ساختار پروژه Laravel را دقیقتر بررسی میکنیم تا بدانیم هر پوشه و فایل چه مسئولیتی دارد.
# ساخت صفحه مقالات
حالا یک صفحه دیگر به پروژه اضافه کنیم.
فایل زیر را بسازید:
resources/views/articles.blade.php
و داخل آن بنویسید:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<title>مقالات</title>
</head>
<body>
<h1>مقالات Laravel</h1>
<ul>
<li>Laravel چیست؟</li>
<li>نصب Laravel</li>
<li>ساخت اولین پروژه Laravel</li>
</ul>
</body>
</html>
سپس Route:
Route::get('/articles', function () {
return view('articles');
});
اکنون:
http://127.0.0.1:8000/articles
را باز کنید.
# آیا بهتر نیست Routeها را مرتب کنیم؟
بله.
در یک پروژه واقعی بهتر است Routeها را با ساختار مشخص تعریف کنیم.
مثلاً:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('home');
});
Route::get('/about', function () {
return view('about');
});
Route::get('/articles', function () {
return view('articles');
});
در پروژههای بزرگتر، منطق برنامه را مستقیماً داخل Route قرار نمیدهیم و از Controller استفاده میکنیم.
این موضوع در مقاله Controller در Laravel بررسی خواهد شد.
# ساخت اولین لینک بین صفحات
حالا بهتر است صفحات ما به یکدیگر لینک داشته باشند.
در home.blade.php میتوانید بنویسید:
<nav>
<a href="/">خانه</a>
<a href="/about">درباره ما</a>
<a href="/articles">مقالات</a>
</nav>
با این کار کاربر میتواند بین صفحات جابهجا شود.
البته در پروژه واقعی Laravel بهتر است لینکها را به شکل مناسب و با امکانات Routing خود Laravel ایجاد کنیم که در مباحث Blade و Route بیشتر با آن آشنا خواهید شد.
# اضافه کردن CSS ساده
برای اینکه پروژه ظاهر بهتری داشته باشد، میتوانیم کمی CSS اضافه کنیم.
مثلاً:
<style>
body {
font-family: sans-serif;
direction: rtl;
max-width: 900px;
margin: 40px auto;
padding: 20px;
}
nav {
display: flex;
gap: 20px;
margin-bottom: 30px;
}
a {
text-decoration: none;
}
</style>
این CSS فعلاً مستقیماً داخل View قرار گرفته است.
در پروژههای حرفهای، Assetها بهتر است به شکل اصولی مدیریت شوند و Laravel در این زمینه ابزارهای مناسبی در اختیار توسعهدهنده قرار میدهد.
# آیا برای این پروژه به Database نیاز داریم؟
در این مرحله خیر.
ما فقط:
- پروژه را ایجاد کردیم.
- Route ساختیم.
- View ایجاد کردیم.
- صفحات مختلف ساختیم.
- بین صفحات لینک ایجاد کردیم.
هنوز هیچ دادهای از Database دریافت نمیکنیم.
اما اگر بخواهیم مثلاً مقالات را از Database بخوانیم، باید مفاهیم دیگری مانند:
- Migration
- Model
- Eloquent
- Database
- Query
را یاد بگیریم.
این مباحث در ادامه کلاستر Laravel به صورت جداگانه بررسی خواهند شد.
# اجرای پروژه Laravel بعد از خاموش و روشن شدن سیستم
فرض کنید کامپیوتر خود را خاموش کردهاید و روز بعد میخواهید روی پروژه کار کنید.
نیازی نیست پروژه را دوباره نصب کنید.
فقط وارد پوشه پروژه شوید:
cd laravel-blog
و سرور توسعه را اجرا کنید:
php artisan serve
اگر وابستگیهای پروژه قبلاً نصب شده باشند، نیازی به اجرای مجدد:
composer create-project
ندارید.
این دستور فقط برای ایجاد پروژه جدید استفاده میشود.
# اگر پروژه Laravel را از Git دریافت کنیم چه میشود؟
این حالت با ساخت پروژه جدید کمی متفاوت است.
فرض کنید پروژه از یک Repository دریافت شده باشد:
git clone https://example.com/project.git
بعد وارد پروژه میشوید:
cd project
سپس معمولاً وابستگیهای PHP را نصب میکنید:
composer install
و در صورت وجود وابستگیهای JavaScript:
npm install
همچنین باید تنظیمات .env را آماده کنید.
این فرآیند با ایجاد یک پروژه جدید تفاوت دارد.
# خطاهای رایج هنگام ساخت اولین پروژه Laravel
۱. دستور php کار نمیکند
بررسی کنید:
php -v
اگر خطا گرفتید، PHP نصب نیست یا PATH به درستی تنظیم نشده است.
۲. Composer اجرا نمیشود
بررسی کنید:
composer -V
اگر اجرا نشد، نصب Composer یا PATH را بررسی کنید.
۳. php artisan اجرا نمیشود
ابتدا مطمئن شوید در پوشه اصلی پروژه هستید:
cd laravel-blog
سپس:
php artisan
را اجرا کنید.
۴. View پیدا نمیشود
اگر با خطایی شبیه View not found مواجه شدید، نام View و محل فایل را بررسی کنید.
مثلاً اگر دارید:
return view('home');
باید فایل زیر وجود داشته باشد:
resources/views/home.blade.php
۵. صفحه Laravel باز نمیشود
بررسی کنید که سرور در حال اجرا باشد:
php artisan serve
سپس آدرسی را که Laravel در ترمینال نمایش داده است در مرورگر باز کنید.
# ساخت اولین پروژه Laravel به صورت خلاصه
تا اینجا مسیر ما چنین بوده است:
آمادهسازی PHP و Composer
↓
ایجاد پروژه
↓
composer create-project
↓
ورود به پوشه پروژه
↓
تنظیم .env
↓
تولید APP_KEY
↓
php artisan serve
↓
ساخت Route
↓
ساخت View
↓
نمایش صفحه در مرورگر
و پروژه ما اکنون میتواند چیزی شبیه این باشد:
Laravel Blog
│
├── صفحه اصلی
├── درباره ما
└── مقالات
# یک نکته مهم برای شروع یادگیری Laravel
در ابتدای یادگیری Laravel ممکن است بخواهید همه قابلیتهای فریمورک را همزمان یاد بگیرید.
این کار معمولاً باعث سردرگمی میشود.
بهتر است مفاهیم را مرحلهبهمرحله یاد بگیرید:
Laravel
↓
Route
↓
Controller
↓
View
↓
Blade
↓
Request / Response
↓
Validation
↓
Database
↓
Migration
↓
Model
↓
Eloquent
به همین دلیل ساختار کلاستر Laravel نیز به صورت مرحلهای طراحی شده است؛ ابتدا محیط و پروژه را آماده میکنیم و سپس هر بخش را جداگانه یاد میگیریم.
# سوالات متداول
اولین پروژه Laravel را چگونه بسازیم؟
سادهترین روش این است:
composer create-project laravel/laravel laravel-blog
سپس:
cd laravel-blog
و:
php artisan serve
آیا برای ساخت اولین پروژه Laravel باید MySQL نصب کنیم؟
خیر.
برای پروژهای که در این آموزش ساختیم، هنوز نیازی به Database نداریم.
زمانی که بخواهیم دادههای واقعی را ذخیره کنیم، باید Database را به پروژه متصل کنیم.
آیا میتوانیم نام پروژه Laravel را تغییر دهیم؟
بله.
نام پوشه در زمان ایجاد پروژه میتواند هر نام مناسبی باشد:
composer create-project laravel/laravel shop
یا:
composer create-project laravel/laravel blog
اولین Route در Laravel کجا قرار دارد؟
Routeهای مربوط به Web معمولاً در فایل زیر قرار میگیرند:
routes/web.php
Viewهای Laravel کجا قرار میگیرند؟
Viewها در:
resources/views
قرار میگیرند.
Viewهای Blade معمولاً پسوند:
.blade.php
دارند.
# جمعبندی
در این مقاله اولین پروژه Laravel خود را از صفر ساختیم.
ابتدا پروژه را با Composer ایجاد کردیم:
composer create-project laravel/laravel laravel-blog
سپس وارد پروژه شدیم:
cd laravel-blog
کلید برنامه را ایجاد کردیم:
php artisan key:generate
پروژه را اجرا کردیم:
php artisan serve
سپس با Route آشنا شدیم و اولین صفحات پروژه را ساختیم.
در نهایت ساختار ساده پروژه ما به این شکل درآمد:
laravel-blog
│
├── resources/views
│ ├── home.blade.php
│ ├── about.blade.php
│ └── articles.blade.php
│
└── routes
└── web.php
این پروژه هنوز بسیار ساده است، اما یک پایه واقعی برای ادامه آموزش Laravel محسوب میشود.
در مقاله بعدی کلاستر، سراغ «ساختار پروژه Laravel» میرویم و پوشهها و فایلهای اصلی پروژه را بررسی میکنیم تا دقیقاً بدانیم هر قسمت چه وظیفهای دارد و هنگام توسعه پروژه، کد هر بخش را کجا باید قرار دهیم.





