Blame view

app/Http/Controllers/Admin/BannerController.php 3.82 KB
c5118e5f3   Андрей Ларионов   Админка сайта - в...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
  <?php
  
  namespace App\Http\Controllers\Admin;
  
  use App\Http\Controllers\Controller;
  use App\Models\Banner;
  use Illuminate\Database\Eloquent\Model;
  use Illuminate\Http\Request;
  use Illuminate\Support\Facades\Storage;
  use Illuminate\Support\Facades\Validator;
  
  class BannerController extends Controller
  {
      /**
       * Display a listing of the resource.
       *
       * @return \Illuminate\Http\Response
       */
      public function index()
      {
          $banners = Banner::query()->orderBy('id')->paginate(5);
          return view('admin.banners.index', compact('banners'));
      }
  
      /**
       * Show the form for creating a new resource.
       *
       * @return \Illuminate\Http\Response
       */
      public function create()
      {
          return view('admin.banners.create');
      }
  
      /**
       * Store a newly created resource in storage.
       *
       * @param  \Illuminate\Http\Request  $request
       * @return \Illuminate\Http\Response
       */
      public function store(Request $request)
      {
          $rules = [
              'image' => 'required|min:3|max:10000',
              'title' => 'required|min:3|max:255'
          ];
          $messages = [
              'required' => 'Поле не может быть пустым!',
          ];
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
              return redirect()->route('admin.banner.create')
                  ->withErrors($validator);
          } else {
  
              $banner = new Banner();
              $banner->title = $request->title;
              $banner->text = $request->text;
              $banner->image =  $request->file('image')->store('banners', 'public');
              $banner->save();
  
              //$area->fotos()->save($foto_area);
              return  redirect()->route('admin.banner.index');
          }
      }
  
      /**
       * Display the specified resource.
       *
       * @param  \App\Models\Banner  $banner
       * @return \Illuminate\Http\Response
       */
      public function show(Banner $banner)
      {
          //
      }
  
      /**
       * Show the form for editing the specified resource.
       *
       * @param  \App\Models\Banner  $banner
       * @return \Illuminate\Http\Response
       */
      public function edit(Banner $banner)
      {
6eff6bf11   Андрей Ларионов   Админка сайта кат...
87
          return view('admin.banners.edit', compact('banner'));
c5118e5f3   Андрей Ларионов   Админка сайта - в...
88
89
90
91
92
93
94
95
96
97
98
99
      }
  
      /**
       * Update the specified resource in storage.
       *
       * @param  \Illuminate\Http\Request  $request
       * @param  \App\Models\Banner  $banner
       * @return \Illuminate\Http\Response
       */
      public function update(Request $request, Banner $banner)
      {
          $rules = [
c5118e5f3   Андрей Ларионов   Админка сайта - в...
100
101
              'title' => 'required|min:3|max:255'
          ];
6eff6bf11   Андрей Ларионов   Админка сайта кат...
102
103
104
105
  
          if (empty($banner->image)) {
              $rules['image'] = 'required|min:3|max:10000';
          }
c5118e5f3   Андрей Ларионов   Админка сайта - в...
106
107
108
109
110
111
          $messages = [
              'required' => 'Поле не может быть пустым!',
          ];
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
6eff6bf11   Андрей Ларионов   Админка сайта кат...
112
              return redirect()->route('admin.banner.edit', ['banner' => $banner->id])
c5118e5f3   Андрей Ларионов   Админка сайта - в...
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
                  ->withErrors($validator);
          } else {
              $params = $request->all();
              unset($params['image']);
              if ($request->has('image')) {
                  Storage::delete($banner->image);
                  $params['image'] = $request->file('image')->store('banners', 'public');
              }
  
              $banner->update($params);
              return  redirect()->route('admin.banner.index');
          }
      }
  
      /**
       * Remove the specified resource from storage.
       *
       * @param  \App\Models\Banner  $banner
       * @return \Illuminate\Http\Response
       */
      public function destroy(Banner $banner)
      {
          if (!empty($banner->image)) {
              Storage::delete($banner->image);
          }
6eff6bf11   Андрей Ларионов   Админка сайта кат...
138
          $banner->delete();
c5118e5f3   Андрей Ларионов   Админка сайта - в...
139
140
141
          return redirect()->route('admin.banner.index');
      }
  }