feat(flights): add flight listing with dynamic data in index

This commit is contained in:
2026-08-17 15:51:25 +03:30
parent 08188f1026
commit 68157e043c
3 changed files with 102 additions and 147 deletions
+9 -2
View File
@@ -16,7 +16,14 @@ class IndexController extends Controller
->orderByDesc('created_at') ->orderByDesc('created_at')
->limit(4) ->limit(4)
->get(); ->get();
$flights = Flight::query()
return view('index' , compact('tours')); ->with(['airline', 'airport', 'destinationAirport'])
->orderByDesc('created_at')
->limit(4)
->get();
$flights->each(function ($flight) {
$flight->start_date_fa = verta($flight->start_time)->format('%d %B');
});
return view('index' , compact('tours' , 'flights'));
} }
} }
+88 -145
View File
@@ -31,7 +31,8 @@
<div class="form-group"> <div class="form-group">
<label>موقعیت</label> <label>موقعیت</label>
<div class="form-group-icon"> <div class="form-group-icon">
<input type="text" name="location" class="form-control" value="تهران ، میدان آزادی"> <input type="text" name="location" class="form-control"
value="تهران ، میدان آزادی">
<i class="fal fa-earth-americas"></i> <i class="fal fa-earth-americas"></i>
</div> </div>
<p>کجا می روی؟</p> <p>کجا می روی؟</p>
@@ -43,7 +44,8 @@
<div class="search-form-journey"> <div class="search-form-journey">
<label>بررسی کنید</label> <label>بررسی کنید</label>
<div class="form-group-icon"> <div class="form-group-icon">
<input type="text" name="journey-date" class="form-control date-picker journey-date"> <input type="text" name="journey-date"
class="form-control date-picker journey-date">
<i class="fal fa-calendar-days"></i> <i class="fal fa-calendar-days"></i>
</div> </div>
<p class="journey-day-name"></p> <p class="journey-day-name"></p>
@@ -51,7 +53,8 @@
<div class="search-form-return"> <div class="search-form-return">
<label>پرداخت</label> <label>پرداخت</label>
<div class="form-group-icon"> <div class="form-group-icon">
<input type="text" name="return-date" class="form-control date-picker return-date"> <input type="text" name="return-date"
class="form-control date-picker return-date">
</div> </div>
<p class="return-day-name"></p> <p class="return-day-name"></p>
</div> </div>
@@ -60,7 +63,8 @@
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
<div class="form-group dropdown passenger-box"> <div class="form-group dropdown passenger-box">
<div class="passenger-class" role="menu" data-bs-toggle="dropdown" aria-expanded="false"> <div class="passenger-class" role="menu" data-bs-toggle="dropdown"
aria-expanded="false">
<label>اتاق ها، مهمانان</label> <label>اتاق ها، مهمانان</label>
<div class="form-group-icon"> <div class="form-group-icon">
<div class="passenger-total"> <div class="passenger-total">
@@ -79,9 +83,13 @@
<p>+12 سال</p> <p>+12 سال</p>
</div> </div>
<div class="passenger-qty"> <div class="passenger-qty">
<button type="button" class="minus-btn"><i class="far fa-minus"></i></button> <button type="button" class="minus-btn"><i
<input type="text" name="adult" class="qty-amount passenger-adult" value="2" readonly> class="far fa-minus"></i></button>
<button type="button" class="plus-btn"><i class="far fa-plus"></i></button> <input type="text" name="adult"
class="qty-amount passenger-adult" value="2"
readonly>
<button type="button" class="plus-btn"><i
class="far fa-plus"></i></button>
</div> </div>
</div> </div>
</div> </div>
@@ -92,9 +100,13 @@
<p>2 تا 12 سال</p> <p>2 تا 12 سال</p>
</div> </div>
<div class="passenger-qty"> <div class="passenger-qty">
<button type="button" class="minus-btn"><i class="far fa-minus"></i></button> <button type="button" class="minus-btn"><i
<input type="text" name="children" class="qty-amount passenger-children" value="0" readonly> class="far fa-minus"></i></button>
<button type="button" class="plus-btn"><i class="far fa-plus"></i></button> <input type="text" name="children"
class="qty-amount passenger-children" value="0"
readonly>
<button type="button" class="plus-btn"><i
class="far fa-plus"></i></button>
</div> </div>
</div> </div>
</div> </div>
@@ -105,9 +117,13 @@
<p>کمتر از 2 سال</p> <p>کمتر از 2 سال</p>
</div> </div>
<div class="passenger-qty"> <div class="passenger-qty">
<button type="button" class="minus-btn"><i class="far fa-minus"></i></button> <button type="button" class="minus-btn"><i
<input type="text" name="infant" class="qty-amount passenger-infant" value="0" readonly> class="far fa-minus"></i></button>
<button type="button" class="plus-btn"><i class="far fa-plus"></i></button> <input type="text" name="infant"
class="qty-amount passenger-infant" value="0"
readonly>
<button type="button" class="plus-btn"><i
class="far fa-plus"></i></button>
</div> </div>
</div> </div>
</div> </div>
@@ -117,9 +133,12 @@
<h6>اتاق ها</h6> <h6>اتاق ها</h6>
</div> </div>
<div class="passenger-qty"> <div class="passenger-qty">
<button type="button" class="minus-btn"><i class="far fa-minus"></i></button> <button type="button" class="minus-btn"><i
<input type="text" name="room" class="qty-amount passenger-room" value="2" readonly> class="far fa-minus"></i></button>
<button type="button" class="plus-btn"><i class="far fa-plus"></i></button> <input type="text" name="room"
class="qty-amount passenger-room" value="2" readonly>
<button type="button" class="plus-btn"><i
class="far fa-plus"></i></button>
</div> </div>
</div> </div>
</div> </div>
@@ -127,19 +146,22 @@
<h6 class="mb-3 mt-2">نوع اتاق</h6> <h6 class="mb-3 mt-2">نوع اتاق</h6>
<div class="passenger-class-info"> <div class="passenger-class-info">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="radio" value="Single Room" name="room-type" id="room-type4"> <input class="form-check-input" type="radio"
value="Single Room" name="room-type" id="room-type4">
<label class="form-check-label" for="room-type4"> <label class="form-check-label" for="room-type4">
اتاق یک نفره اتاق یک نفره
</label> </label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input" checked type="radio" value="Double Room" name="room-type" id="room-type5"> <input class="form-check-input" checked type="radio"
value="Double Room" name="room-type" id="room-type5">
<label class="form-check-label" for="room-type5"> <label class="form-check-label" for="room-type5">
اتاق دونفره اتاق دونفره
</label> </label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="radio" value="Deluxe Room" name="room-type" id="room-type6"> <input class="form-check-input" type="radio"
value="Deluxe Room" name="room-type" id="room-type6">
<label class="form-check-label" for="room-type6"> <label class="form-check-label" for="room-type6">
اتاق دولوکس اتاق دولوکس
</label> </label>
@@ -151,7 +173,9 @@
</div> </div>
</div> </div>
<div class="search-btn"> <div class="search-btn">
<button type="submit" class="theme-btn"><span class="far fa-search"></span>جستجو کردن</button> <button type="submit" class="theme-btn"><span class="far fa-search"></span>جستجو
کردن
</button>
</div> </div>
</div> </div>
</form> </form>
@@ -173,7 +197,8 @@
<i class="flaticon-climbing"></i> <i class="flaticon-climbing"></i>
</div> </div>
<h4 class="feature-title">3,000 + راهنما محلی</h4> <h4 class="feature-title">3,000 + راهنما محلی</h4>
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک
است. چاپگرها و متون بلکه روزنامه و مجله میباشد.</p>
</div> </div>
</div> </div>
<div class="col-md-6 col-lg-4"> <div class="col-md-6 col-lg-4">
@@ -182,7 +207,8 @@
<i class="flaticon-price"></i> <i class="flaticon-price"></i>
</div> </div>
<h4 class="feature-title">بهترین گارانتی قیمت</h4> <h4 class="feature-title">بهترین گارانتی قیمت</h4>
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک
است. چاپگرها و متون بلکه روزنامه و مجله میباشد.</p>
</div> </div>
</div> </div>
<div class="col-md-6 col-lg-4"> <div class="col-md-6 col-lg-4">
@@ -191,7 +217,8 @@
<i class="flaticon-customer-service"></i> <i class="flaticon-customer-service"></i>
</div> </div>
<h4 class="feature-title">خدمات مشتریان 24/7</h4> <h4 class="feature-title">خدمات مشتریان 24/7</h4>
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک
است. چاپگرها و متون بلکه روزنامه و مجله میباشد.</p>
</div> </div>
</div> </div>
</div> </div>
@@ -200,21 +227,21 @@
</div> </div>
{{-- <div class="cta-area pb-120">--}} {{-- <div class="cta-area pb-120">--}}
{{-- <div class="container">--}} {{-- <div class="container">--}}
{{-- <div class="cta-wrapper">--}} {{-- <div class="cta-wrapper">--}}
{{-- <div class="row">--}} {{-- <div class="row">--}}
{{-- <div class="col-lg-7 mx-auto text-center">--}} {{-- <div class="col-lg-7 mx-auto text-center">--}}
{{-- <div class="cta-text">--}} {{-- <div class="cta-text">--}}
{{-- <h1>اولین رزرو هفتاد درصد تخفیف بگیرید!</h1>--}} {{-- <h1>اولین رزرو هفتاد درصد تخفیف بگیرید!</h1>--}}
{{-- <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان است. </p>--}} {{-- <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان است. </p>--}}
{{-- </div>--}} {{-- </div>--}}
{{-- <a href="#" class="theme-btn mt-30">اکنون ثبت کن <i class="far fa-arrow-left"></i></a>--}} {{-- <a href="#" class="theme-btn mt-30">اکنون ثبت کن <i class="far fa-arrow-left"></i></a>--}}
{{-- </div>--}} {{-- </div>--}}
{{-- </div>--}} {{-- </div>--}}
{{-- </div>--}} {{-- </div>--}}
{{-- </div>--}} {{-- </div>--}}
{{-- </div>--}} {{-- </div>--}}
<div class="activity-area bg py-120"> <div class="activity-area bg py-120">
@@ -223,7 +250,7 @@
<div class="col-lg-6 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s"> <div class="col-lg-6 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s">
<div class="site-heading text-center"> <div class="site-heading text-center">
<a href="{{route('tour.index')}}"> <a href="{{route('tour.index')}}">
<span class="site-title-tagline">تور ها</span> <span class="site-title-tagline">تور ها</span>
</a> </a>
<h2 class="site-title">اخرین تور های ما</h2> <h2 class="site-title">اخرین تور های ما</h2>
@@ -232,7 +259,7 @@
</div> </div>
<div class="row"> <div class="row">
@foreach($tours as $card) @foreach($tours as $card)
@include('components.flightcard') @include('components.tourcard')
@endforeach @endforeach
@@ -246,108 +273,18 @@
<div class="row"> <div class="row">
<div class="col-lg-6 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s"> <div class="col-lg-6 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s">
<div class="site-heading text-center"> <div class="site-heading text-center">
<span class="site-title-tagline">مقصد</span> <a href="{{route('flight.index')}}">
<h2 class="site-title">محبوب ترین مقاصد ما</h2>
<span class="site-title-tagline">پرواز ها</span>
</a>
<h2 class="site-title">اخرین پرواز ها</h2>
</div> </div>
</div> </div>
</div> </div>
<div class="row align-items-center"> <div class="row">
<div class="col-md-6 col-lg-4"> @foreach($flights as $card)
<div class="destination-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".25s"> @include('components.flightcard')
<div class="destination-img"> @endforeach
<img src="assets/img/destination/01.jpg" alt>
</div>
<div class="destination-info">
<h4>شهر نیو یورک</h4>
<div class="destination-more-info">
<ul>
<li><i class="far fa-person-biking-mountain"></i> 30 فعالیت</li>
</ul>
</div>
</div>
<a href="#" class="destination-btn">جست و جو <i class="far fa-arrow-left"></i></a>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="destination-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".50s">
<div class="destination-img">
<img src="assets/img/destination/09.jpg" alt>
</div>
<div class="destination-info">
<h4>سن فرانسیسکو</h4>
<div class="destination-more-info">
<ul>
<li><i class="far fa-person-biking-mountain"></i> 30 فعالیت</li>
</ul>
</div>
</div>
<a href="#" class="destination-btn">جست و جو <i class="far fa-arrow-left"></i></a>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="destination-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".75s">
<div class="destination-img">
<img src="assets/img/destination/10.jpg" alt>
</div>
<div class="destination-info">
<h4>لاس وگاس</h4>
<div class="destination-more-info">
<ul>
<li><i class="far fa-person-biking-mountain"></i> 30 فعالیت</li>
</ul>
</div>
</div>
<a href="#" class="destination-btn">جست و جو <i class="far fa-arrow-left"></i></a>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="destination-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".25s">
<div class="destination-img">
<img src="assets/img/destination/11.jpg" alt>
</div>
<div class="destination-info">
<h4>لوس آنجلس</h4>
<div class="destination-more-info">
<ul>
<li><i class="far fa-person-biking-mountain"></i> 30 فعالیت</li>
</ul>
</div>
</div>
<a href="#" class="destination-btn">جست و جو <i class="far fa-arrow-left"></i></a>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="destination-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".50s">
<div class="destination-img">
<img src="assets/img/destination/12.jpg" alt>
</div>
<div class="destination-info">
<h4>سیدنی</h4>
<div class="destination-more-info">
<ul>
<li><i class="far fa-person-biking-mountain"></i> 30 فعالیت</li>
</ul>
</div>
</div>
<a href="#" class="destination-btn">جست و جو <i class="far fa-arrow-left"></i></a>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="destination-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".75s">
<div class="destination-img">
<img src="assets/img/destination/06.jpg" alt>
</div>
<div class="destination-info">
<h4>نیواورلان</h4>
<div class="destination-more-info">
<ul>
<li><i class="far fa-person-biking-mountain"></i> 30 فعالیت</li>
</ul>
</div>
</div>
<a href="#" class="destination-btn">جست و جو <i class="far fa-arrow-left"></i></a>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -367,7 +304,8 @@
</div> </div>
</div> </div>
<div class="col-lg-7"> <div class="col-lg-7">
<div class="testimonial-slider owl-carousel owl-theme wow fadeInUp" data-wow-duration="1s" data-wow-delay=".25s" dir="ltr"> <div class="testimonial-slider owl-carousel owl-theme wow fadeInUp" data-wow-duration="1s"
data-wow-delay=".25s" dir="ltr">
<div class="testimonial-single" dir="rtl"> <div class="testimonial-single" dir="rtl">
<div class="testimonial-content" dir="rtl"> <div class="testimonial-content" dir="rtl">
<div class="testimonial-author-img" dir="rtl"> <div class="testimonial-author-img" dir="rtl">
@@ -379,7 +317,8 @@
</div> </div>
</div> </div>
<div class="testimonial-quote" dir="rtl"> <div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl"> <div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt> <img src="assets/img/icon/quote.svg" alt>
</div> </div>
@@ -403,7 +342,8 @@
</div> </div>
</div> </div>
<div class="testimonial-quote" dir="rtl"> <div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl"> <div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt> <img src="assets/img/icon/quote.svg" alt>
</div> </div>
@@ -427,7 +367,8 @@
</div> </div>
</div> </div>
<div class="testimonial-quote" dir="rtl"> <div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl"> <div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt> <img src="assets/img/icon/quote.svg" alt>
</div> </div>
@@ -451,7 +392,8 @@
</div> </div>
</div> </div>
<div class="testimonial-quote" dir="rtl"> <div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl"> <div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt> <img src="assets/img/icon/quote.svg" alt>
</div> </div>
@@ -475,7 +417,8 @@
</div> </div>
</div> </div>
<div class="testimonial-quote" dir="rtl"> <div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p> <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl"> <div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt> <img src="assets/img/icon/quote.svg" alt>
</div> </div>
+5
View File
@@ -1,5 +1,6 @@
<?php <?php
use App\Http\Controllers\FlightController;
use App\Http\Controllers\IndexController; use App\Http\Controllers\IndexController;
use App\Http\Controllers\TourController; use App\Http\Controllers\TourController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
@@ -11,3 +12,7 @@ Route::prefix('tour')->controller(TourController::class)->name('tour.')->group(f
Route::get('index' , 'index')->name('index'); Route::get('index' , 'index')->name('index');
Route::get('show/{tour}' , 'show')->name('show'); Route::get('show/{tour}' , 'show')->name('show');
}); });
Route::prefix('flight')->controller(FlightController::class)->name('flight.')->group(function (){
Route::get('index' , 'index')->name('index');
Route::get('show/{flight}' , 'show')->name('show');
});