feat: add tour list and show and edit and delete tours in admin panel

This commit is contained in:
2026-08-19 19:19:03 +03:30
parent 4bae517b2d
commit 1539b70ae4
13 changed files with 594 additions and 247 deletions
@@ -0,0 +1,84 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Tours\TourUpdatePostRequest;
use App\Models\Airport;
use App\Models\Tour;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\Request;
class TourController extends Controller
{
public function index()
{
$tours = Tour::with([
'file',
'originAirport',
'destinationAirport',
'tour_details'
])
->latest()
->paginate(10);
return view('admin.tours.index', compact('tours'));
}
public function edit(Tour $tour)
{
$airports = Airport::all();
$tour->load([
'tour_details',
'originAirport',
'destinationAirport',
'file',
]);
return view('admin.tours.edit', compact('tour' , 'airports'));
}
/**
* @throws \Exception
*/
public function update(TourUpdatePostRequest $request, Tour $tour)
{
$tour->update([
'title' => $request->title,
'tour_type' => $request->tour_type,
'summary' => $request->summary,
'description' => $request->description,
'origin_airports_id' => $request->origin_airports_id,
'destination_airports_id' => $request->destination_airports_id,
]);
$tourDetail = $tour->tour_details()->first();
if ($tourDetail) {
$startDate = Verta::parseFormat('Y/m/d', $request->start_date)->datetime();
$endDate = Verta::parseFormat('Y/m/d', $request->end_date)->datetime();
$tourDetail->update([
'start_date' => $startDate,
'end_date' => $endDate,
]);
}
return redirect()
->route('admin.tours.index')
->with('success', 'تور با موفقیت بروزرسانی شد.');
}
public function destroy(Tour $tour)
{
$tour->tour_details()->delete();
$tour->delete();
return redirect()
->route('admin.tours.index')
->with('success', 'تور با موفقیت حذف شد.');
}
}
@@ -0,0 +1,66 @@
<?php
namespace App\Http\Requests\Tours;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class TourUpdatePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'title' => [
'required',
'string',
'min:3',
'max:150',
],
'file_id' => [
'nullable',
'exists:files,id',
],
'tour_type' => [
'required',
'string',
'max:255',
],
'summary' => [
'required',
'string',
],
'description' => [
'required',
'string',
],
'origin_airports_id' => [
'required',
'exists:airports,id',
],
'destination_airports_id' => [
'required',
'exists:airports,id',
],
];
}
}
+2 -1
View File
@@ -9,7 +9,7 @@ namespace App\Models;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class Tour * Class Tour
* *
@@ -33,6 +33,7 @@ use Illuminate\Database\Eloquent\Model;
*/ */
class Tour extends Model class Tour extends Model
{ {
use SoftDeletes;
/** /**
* @var float|mixed|null * @var float|mixed|null
*/ */
+2 -1
View File
@@ -8,7 +8,7 @@ namespace App\Models;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class TourDetail * Class TourDetail
* *
@@ -28,6 +28,7 @@ use Illuminate\Database\Eloquent\Model;
*/ */
class TourDetail extends Model class TourDetail extends Model
{ {
use SoftDeletes;
protected $table = 'tour_details'; protected $table = 'tour_details';
protected $casts = [ protected $casts = [
+2 -2
View File
@@ -25,7 +25,7 @@
<span>تعداد تور</span> <span>تعداد تور</span>
</div> </div>
<div class="dashboard-widget-icon"> <div class="dashboard-widget-icon">
<i class="fal fa-loader"></i> <i class="fal fa-suitcase"></i>
</div> </div>
</div> </div>
</div> </div>
@@ -36,7 +36,7 @@
<span >تعداد پرواز ها</span> <span >تعداد پرواز ها</span>
</div> </div>
<div class="dashboard-widget-icon"> <div class="dashboard-widget-icon">
<i class="fal fa-sack-dollar"></i> <i class="fal fa-plane"></i>
</div> </div>
</div> </div>
</div> </div>
+245
View File
@@ -0,0 +1,245 @@
@extends('dashboard.layouts.app')
@section('title','ویرایش تور')
@section('account-content')
<div class="user-profile-wrapper">
@if(session('success'))
<div class="col-lg-12 mb-3">
<div class="alert alert-success">
{{session('success')}}
</div>
</div>
@endif
<div class="col-lg-12 mb-4">
<div class="user-profile-card">
<h4 class="user-profile-card-title">
ویرایش تور
</h4>
<div class="user-profile-form">
<form action="{{route('admin.tours.update',$tour->id)}}" method="POST">
@csrf
@method('PUT')
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>عنوان تور</label>
<input type="text"
name="title"
class="form-control"
value="{{old('title',$tour->title)}}"
placeholder="عنوان تور">
@error('title')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>نوع تور</label>
<input type="text"
name="tour_type"
class="form-control"
value="{{old('tour_type',$tour->tour_type)}}"
placeholder="نوع تور">
@error('tour_type')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>مبدأ</label>
<select name="origin_airports_id" class="form-control">
<option value="">
انتخاب مبدأ
</option>
@foreach($airports as $airport)
<option value="{{$airport->id}}"
{{old('origin_airports_id',$tour->origin_airports_id)==$airport->id?'selected':''}}>
{{$airport->city}}
</option>
@endforeach
</select>
@error('origin_airports_id')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>مقصد</label>
<select name="destination_airports_id" class="form-control">
<option value="">
انتخاب مقصد
</option>
@foreach($airports as $airport)
<option value="{{$airport->id}}"
{{old('destination_airports_id',$tour->destination_airports_id)==$airport->id?'selected':''}}>
{{$airport->city}}
</option>
@endforeach
</select>
@error('destination_airports_id')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>تاریخ حرکت</label>
<input type="text"
name="start_date"
id="start_date"
class="form-control"
value="{{old('start_date',$tour->tour_details->first()?verta($tour->tour_details->first()->start_date)->format('Y/m/d'):'')}}"
placeholder="تاریخ حرکت">
@error('start_date')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>تاریخ برگشت</label>
<input type="text"
name="end_date"
id="end_date"
class="form-control"
value="{{old('end_date',$tour->tour_details->first()?verta($tour->tour_details->first()->end_date)->format('Y/m/d'):'')}}"
placeholder="تاریخ برگشت">
@error('end_date')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label>خلاصه تور</label>
<textarea name="summary"
class="form-control"
rows="4"
placeholder="خلاصه تور">{{old('summary',$tour->summary)}}</textarea>
@error('summary')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label>توضیحات تور</label>
<textarea name="description"
class="form-control"
rows="6"
placeholder="توضیحات تور">{{old('description',$tour->description)}}</textarea>
@error('description')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
</div>
</div>
<button type="submit" class="theme-btn mt-4">
بروزرسانی تور
<i class="far fa-edit"></i>
</button>
</form>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function(){
$('#start_date').persianDatepicker({
format:'YYYY/MM/DD',
autoClose:true
});
$('#end_date').persianDatepicker({
format:'YYYY/MM/DD',
autoClose:true
});
});
</script>
@endsection
+132
View File
@@ -0,0 +1,132 @@
@extends('dashboard.layouts.app')
@section('title', 'لیست تورها')
@section('account-content')
<div class="user-profile-wrapper">
@if(session('success'))
<div class="col-lg-12 mb-3">
<div class="alert alert-success">
{{ session('success') }}
</div>
</div>
@endif
<div class="col-lg-12">
<div class="user-profile-card">
<h4 class="user-profile-card-title">
لیست تورها
</h4>
<div class="user-profile-form">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>#</th>
<th>عنوان تور</th>
<th>مبدأ</th>
<th>مقصد</th>
<th>تاریخ حرکت</th>
<th>تاریخ برگشت</th>
<th>نوع تور</th>
<th>عملیات</th>
</tr>
</thead>
<tbody>
@forelse($tours as $tour)
@php
$detail = $tour->tour_details->first();
@endphp
<tr>
<td>
{{ $tours->firstItem() + $loop->index }}
</td>
<td>
{{ $tour->title }}
</td>
<td>
{{ $tour->originAirport?->city ?? '-' }}
</td>
<td>
{{ $tour->destinationAirport?->city ?? '-' }}
</td>
<td>
{{ verta($tour->tour_details->first()->start_date)->format('Y/m/d') }}
<td>
{{ verta($tour->tour_details->first()->end_date)->format('Y/m/d') }} </td>
<td>
{{ $tour->tour_type }}
</td>
<td>
<div class="d-flex align-items-center gap-2">
<a href="{{ route('tour.show', $tour->id) }}" title="مشاهده"
class="btn btn-outline-secondary btn-sm">
<i class="far fa-eye"></i>
</a>
<a href="{{ route('admin.tours.edit', $tour->id) }}" title="ویرایش"
class="btn btn-outline-secondary btn-sm">
<i class="far fa-pen"></i>
</a>
<form action="{{ route('admin.tours.destroy', $tour->id) }}" method="POST"
style="display: inline-block;">
@csrf
@method('DELETE')
<button type="submit" title="حذف"
onclick="return confirm('آیا از حذف این تور مطمئن هستید؟')"
class="btn btn-outline-secondary btn-sm"><i class="far fa-trash-can"></i> </button>
</form>
</div>
</td>
</tr>
@empty
<tr>
<td colspan="8" class="text-center">
هیچ توری ثبت نشده است.
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="mt-4">
{{ $tours->links() }}
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -59,7 +59,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="#"> <a href="{{route('admin.tours.index')}}">
<i class="far fa-suitcase"></i> <i class="far fa-suitcase"></i>
مدیریت تورها مدیریت تورها
</a> </a>
+1 -1
View File
@@ -71,7 +71,7 @@
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label for="user_city">شهر</label> <label>شهر</label>
<input type="text" name="user_city" class="form-control" <input type="text" name="user_city" class="form-control"
value="{{ old('user_city', $user->user_city) }}" placeholder="شهر"> value="{{ old('user_city', $user->user_city) }}" placeholder="شهر">
@error('user_city') @error('user_city')
-220
View File
@@ -120,226 +120,6 @@
</div> </div>
<div class="testimonial-area bg py-120">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-5 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s">
<div class="site-heading">
<span class="site-title-tagline">توصیه ها و گواهینامه</span>
<h2 class="site-title">لورم ایپسوم متن ساختگی با تولید سادگی است.</h2>
<p>انواع مختلفی از عبارات بر خلاف باور عمومی موجود است اما
اکثریت با طنز تزریق شده یا کلمات تصادفی به نوعی دچار تغییر شده اند
که حتی کمی به نظر نمی رسد از یک گذرگاه باورنکردنی استفاده کنید.</p>
<a href="#" class="theme-btn mt-30">کاوش کردن بیشتر<i class="far fa-arrow-left"></i></a>
</div>
</div>
<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-single" dir="rtl">
<div class="testimonial-content" dir="rtl">
<div class="testimonial-author-img" dir="rtl">
<img src="assets/img/testimonial/01.jpg" alt>
</div>
<div class="testimonial-author-info" dir="rtl">
<h4>سیلویا اچ گرین</h4>
<p>مشتریان</p>
</div>
</div>
<div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt>
</div>
</div>
<div class="testimonial-rate" dir="rtl">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
<div class="testimonial-single" dir="rtl">
<div class="testimonial-content" dir="rtl">
<div class="testimonial-author-img" dir="rtl">
<img src="assets/img/testimonial/02.jpg" alt>
</div>
<div class="testimonial-author-info" dir="rtl">
<h4>گوردو نواک</h4>
<p>مشتریان</p>
</div>
</div>
<div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt>
</div>
</div>
<div class="testimonial-rate" dir="rtl">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
<div class="testimonial-single" dir="rtl">
<div class="testimonial-content" dir="rtl">
<div class="testimonial-author-img" dir="rtl">
<img src="assets/img/testimonial/03.jpg" alt>
</div>
<div class="testimonial-author-info" dir="rtl">
<h4>مایکل جکسون</h4>
<p>مشتریان</p>
</div>
</div>
<div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt>
</div>
</div>
<div class="testimonial-rate" dir="rtl">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
<div class="testimonial-single" dir="rtl">
<div class="testimonial-content" dir="rtl">
<div class="testimonial-author-img" dir="rtl">
<img src="assets/img/testimonial/04.jpg" alt>
</div>
<div class="testimonial-author-info" dir="rtl">
<h4>برایان جیمز</h4>
<p>مشتریان</p>
</div>
</div>
<div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt>
</div>
</div>
<div class="testimonial-rate" dir="rtl">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
<div class="testimonial-single" dir="rtl">
<div class="testimonial-content" dir="rtl">
<div class="testimonial-author-img" dir="rtl">
<img src="assets/img/testimonial/05.jpg" alt>
</div>
<div class="testimonial-author-info" dir="rtl">
<h4>بندیکت کمبریچ</h4>
<p>مشتریان</p>
</div>
</div>
<div class="testimonial-quote" dir="rtl">
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
<div class="testimonial-quote-icon" dir="rtl">
<img src="assets/img/icon/quote.svg" alt>
</div>
</div>
<div class="testimonial-rate" dir="rtl">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="blog-area py-120">
<div class="container">
<div class="row">
<div class="col-lg-6 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s">
<div class="site-heading text-center">
<span class="site-title-tagline">وبلاگ ما</span>
<h2 class="site-title">آخرین وبلاگ و اخبار ما</h2>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 col-lg-4">
<div class="blog-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".25s">
<div class="blog-item-img">
<img src="assets/img/blog/01.jpg" alt="Thumb">
</div>
<div class="blog-item-info">
<div class="blog-item-meta">
<ul>
<li><a href="#"><i class="far fa-user-circle"></i> نوشته آلیشیا دیویس</a></li>
<li><a href="#"><i class="far fa-calendar-alt"></i> 30 بهمن،1402 </a></li>
</ul>
</div>
<h4 class="blog-title">
<a href="#">برای اکثریت در برخی از تزریقات، تغییرات زیادی وجود دارد
شوخ طبعی</a>
</h4>
<a class="theme-btn mt-3" href="#"> ادامه مطلب <i class="far fa-arrow-left"></i></a>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="blog-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".50s">
<div class="blog-item-img">
<img src="assets/img/blog/02.jpg" alt="Thumb">
</div>
<div class="blog-item-info">
<div class="blog-item-meta">
<ul>
<li><a href="#"><i class="far fa-user-circle"></i> نوشته آلیشیا دیویس</a></li>
<li><a href="#"><i class="far fa-calendar-alt"></i> 30 بهمن،1402 </a></li>
</ul>
</div>
<h4 class="blog-title">
<a href="#">برای اکثریت در برخی از تزریقات، تغییرات زیادی وجود دارد
شوخ طبعی</a>
</h4>
<a class="theme-btn mt-3" href="#"> ادامه مطلب <i class="far fa-arrow-left"></i></a>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="blog-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".75s">
<div class="blog-item-img">
<img src="assets/img/blog/03.jpg" alt="Thumb">
</div>
<div class="blog-item-info">
<div class="blog-item-meta">
<ul>
<li><a href="#"><i class="far fa-user-circle"></i> نوشته آلیشیا دیویس</a></li>
<li><a href="#"><i class="far fa-calendar-alt"></i> 30 بهمن،1402 </a></li>
</ul>
</div>
<h4 class="blog-title">
<a href="#">برای اکثریت در برخی از تزریقات، تغییرات زیادی وجود دارد
شوخ طبعی</a>
</h4>
<a class="theme-btn mt-3" href="#"> ادامه مطلب <i class="far fa-arrow-left"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection @endsection
+24 -4
View File
@@ -1,4 +1,3 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@@ -23,7 +22,13 @@
<link rel="stylesheet" href="{{asset('assets/css/jquery-ui.min.css')}}"> <link rel="stylesheet" href="{{asset('assets/css/jquery-ui.min.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/jquery.timepicker.min.css')}}"> <link rel="stylesheet" href="{{asset('assets/css/jquery.timepicker.min.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/style.css')}}"> <link rel="stylesheet" href="{{asset('assets/css/style.css')}}">
{{-- Persian Datepicker --}}
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/persian-datepicker@1.2.0/dist/css/persian-datepicker.min.css">
</head> </head>
<body> <body>
<div class="preloader"> <div class="preloader">
@@ -54,6 +59,7 @@
@includeUnless(isset($withoutHeader), 'layouts.header') @includeUnless(isset($withoutHeader), 'layouts.header')
<main class="main"> <main class="main">
@yield('content') @yield('content')
@@ -63,10 +69,21 @@
@includeUnless(isset($withoutFooter), 'layouts.footer') @includeUnless(isset($withoutFooter), 'layouts.footer')
<a href="#" id="scroll-top"><i class="far fa-angle-up"></i></a> <a href="#" id="scroll-top">
<i class="far fa-angle-up"></i>
</a>
{{-- jQuery فقط یک بار --}}
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
{{-- Persian Date --}}
<script src="https://cdn.jsdelivr.net/npm/persian-date@1.1.0/dist/persian-date.min.js"></script>
{{-- Persian Datepicker --}}
<script src="https://cdn.jsdelivr.net/npm/persian-datepicker@1.2.0/dist/js/persian-datepicker.min.js"></script>
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script src="{{asset('assets/js/jquery-3.6.0.min.js')}}"></script>
<script src="{{asset('assets/js/modernizr.min.js')}}"></script> <script src="{{asset('assets/js/modernizr.min.js')}}"></script>
<script src="{{asset('assets/js/bootstrap.bundle.min.js')}}"></script> <script src="{{asset('assets/js/bootstrap.bundle.min.js')}}"></script>
<script src="{{asset('assets/js/imagesloaded.pkgd.min.js')}}"></script> <script src="{{asset('assets/js/imagesloaded.pkgd.min.js')}}"></script>
@@ -82,6 +99,9 @@
<script src="{{asset('assets/js/jquery.timepicker.min.js')}}"></script> <script src="{{asset('assets/js/jquery.timepicker.min.js')}}"></script>
<script src="{{asset('assets/js/wow.min.js')}}"></script> <script src="{{asset('assets/js/wow.min.js')}}"></script>
<script src="{{asset('assets/js/main.js')}}"></script> <script src="{{asset('assets/js/main.js')}}"></script>
@yield('scripts')
</body> </body>
</html> </html>
+3 -3
View File
@@ -41,18 +41,18 @@
</div> </div>
</li> </li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">پرواز ها</a> <a class="nav-link dropdown-toggle" href="{{route('flight.index')}}" data-bs-toggle="dropdown">پرواز ها</a>
<ul class="dropdown-menu fade-down"> <ul class="dropdown-menu fade-down">
<li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a></li> <li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a></li>
</ul> </ul>
</li> </li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">تور ها</a> <a class="nav-link dropdown-toggle" href="{{route('tour.index')}}" data-bs-toggle="dropdown">تور ها</a>
<ul class="dropdown-menu fade-down"> <ul class="dropdown-menu fade-down">
<li><a class="dropdown-item" href="{{route('tour.index')}}">لیست تور</a></li> <li><a class="dropdown-item" href="{{route('tour.index')}}">لیست تور</a></li>
</ul> </ul>
</li> </li>
<li class="nav-item"><a class="nav-link" href="contact.html">تماس باما</a></li> <li class="nav-item"><a class="nav-link" href="{{route('about-us')}}">درباره ما</a></li>
</ul> </ul>
<div class="header-nav-right"> <div class="header-nav-right">
<div class="header-btn"> <div class="header-btn">
+19 -1
View File
@@ -1,11 +1,12 @@
<?php <?php
use App\Http\Controllers\Admin\TourController;
use App\Http\Controllers\Admin\AdminController; use App\Http\Controllers\Admin\AdminController;
use App\Http\Controllers\Admin\Auth\LoginController; use App\Http\Controllers\Admin\Auth\LoginController;
use App\Http\Controllers\Admin\DashboardController; use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\UserController; use App\Http\Controllers\Admin\UserController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('admin')->name('admin.')->group(function () { Route::prefix('admin')->name('admin.')->group(function () {
Route::controller(LoginController::class)->middleware('admin.guest')->group(function () { Route::controller(LoginController::class)->middleware('admin.guest')->group(function () {
@@ -30,6 +31,23 @@ Route::prefix('admin')->name('admin.')->group(function () {
Route::put('{admin}', 'update')->name('update'); Route::put('{admin}', 'update')->name('update');
Route::delete('{admin}', 'destroy')->name('destroy'); Route::delete('{admin}', 'destroy')->name('destroy');
}); });
Route::prefix('tours')->controller(TourController::class)->name('tours.')->group(function () {
Route::get('/', 'index')->name('index');
Route::get('create', 'create')->name('create');
Route::post('/', 'store')->name('store');
Route::get('{tour}', 'show')->name('show');
Route::get('{tour}/edit', 'edit')->name('edit');
Route::put('{tour}', 'update')->name('update');
Route::delete('{tour}', 'destroy')->name('destroy');
});
}); });