Skip to content

Commit 046d7a0

Browse files
author
Ahmad Yousef
committed
13. File System
1 parent 445e3c0 commit 046d7a0

File tree

12 files changed

+56
-15
lines changed

12 files changed

+56
-15
lines changed

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ You can watch our Arabic course using this [link](https://www.youtube.com/playli
1616
2. Preparing the admin template and the form editor using tinyMCE
1717
7. Controllers:
1818
1. Post
19-
2. Get
19+
2. Get
20+
3. Put
21+
8. File System and uploading a file.

app/Http/Controllers/ArticleController.php

+32-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
namespace App\Http\Controllers;
44

55
use App\Article;
6+
use Carbon\Carbon;
67
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Storage;
79
use Validator;
810
class ArticleController extends Controller
911
{
@@ -22,7 +24,7 @@ protected function validator (array $data) {
2224
*/
2325
public function index()
2426
{
25-
$articles = Article::paginate(10);
27+
$articles = Article::paginate(20);
2628
return view('welcome')->with('articles',$articles);
2729
}
2830

@@ -47,11 +49,19 @@ public function store(Request $request)
4749
// 1. validation Title, Body
4850
$this->validator($request->all())->validate();
4951
// 2. add to database.
50-
// $article = Article::create($request->all());
52+
53+
// 1. get file from form
54+
$file = $request->file('thumbnail');
55+
// 2. name the file
56+
$time = Carbon::now();
57+
$directory = date_format($time,'Y').'/'.date_format($time,'m');
58+
$fileName = date_format($time,'h').date_format($time,'s').rand(1,9).'.'.$file->extension();
59+
// 3. upload
60+
Storage::disk('public')->putFileAs($directory,$file,$fileName);
5161
$article = Article::create([
5262
'body' => $request->body,
5363
'title' => $request->title,
54-
'thumbnail' => 'loading',
64+
'thumbnail' => $directory.'/'.$fileName,
5565
]);
5666
// 3. return to another page.
5767
$request->session()->flash('message','تم إضافة المقالة بنجاح');
@@ -92,10 +102,28 @@ public function edit($id)
92102
public function update(Request $request, $id)
93103
{
94104
$article=Article::where('id',$id)->firstOrFail();
105+
95106
$article->update([
96107
'body' => $request->body,
97-
'title' => $request->title
108+
'title' => $request->title,
98109
]);
110+
111+
if($request->file('thumbnail'))
112+
{
113+
// 1. get file from form
114+
$file = $request->file('thumbnail');
115+
// 2. name the file
116+
$time = Carbon::now();
117+
$directory = date_format($time,'Y').'/'.date_format($time,'m');
118+
$fileName = date_format($time,'h').date_format($time,'s').rand(1,9).'.'.$file->extension();
119+
// 3. upload
120+
Storage::disk('public')->putFileAs($directory,$file,$fileName);
121+
$article->thumbnail = $directory.'/'.$fileName;
122+
$article->save();
123+
}
124+
125+
126+
99127
$request->session()->flash('message','تم تعديل المقالة بنجاح');
100128
return redirect()->route('admin_index');
101129
}

config/filesystems.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050

5151
'public' => [
5252
'driver' => 'local',
53-
'root' => storage_path('app/public'),
54-
'url' => env('APP_URL').'/storage',
53+
'root' => public_path('uploads'),
54+
'url' => env('APP_URL').'/uploads',
5555
'visibility' => 'public',
5656
],
5757

public/.htaccess

+1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@
1818
RewriteCond %{REQUEST_FILENAME} !-d
1919
RewriteCond %{REQUEST_FILENAME} !-f
2020
RewriteRule ^ index.php [L]
21+
Options +FollowSymlinks
2122
</IfModule>

public/uploads/2020/04/05256.jpeg

5.76 MB
Loading

public/uploads/2020/04/05337.jpeg

6.95 MB
Loading

public/uploads/2020/04/05461.jpeg

6.9 MB
Loading

public/uploads/2020/04/05541.jpeg

4.79 MB
Loading

public/uploads/2020/04/06012.jpeg

7.33 MB
Loading

resources/views/admin/create.blade.php

+9-6
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,20 @@
1313
<div class="card-header">إضافة مقالة</div>
1414

1515
<div class="card-body">
16-
<form class="form-horizontal" action="{{url('/admin/store')}}" method="post">
16+
<form enctype="multipart/form-data" class="form-horizontal" action="{{url('/admin/store')}}" method="post">
1717
{{ csrf_field() }}
1818
<div class="form-group">
1919
<input class="form-control" type="text" name="title" placeholder="العنوان هنا">
2020
</div>
2121
<div class="form-group">
22-
<textarea name="body" id="mytextarea">النص هنا</textarea>
23-
</div>
24-
<div class="form-group">
25-
<input class="btn btn-success" type="submit" value="نشر"/>
26-
</div>
22+
<textarea name="body" id="mytextarea">النص هنا</textarea>
23+
</div>
24+
<div class="form-group">
25+
<input class="form-control" type="file" name="thumbnail" accept="image/*" />
26+
</div>
27+
<div class="form-group">
28+
<input class="btn btn-success" type="submit" value="نشر"/>
29+
</div>
2730
</form>
2831
</div>
2932
@endsection

resources/views/admin/edit.blade.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<div class="card-header">تعديل مقالة</div>
1414

1515
<div class="card-body">
16-
<form class="form-horizontal" action="{{url('/admin/update/'.$article->id)}}" method="post">
16+
<form enctype="multipart/form-data" class="form-horizontal" action="{{url('/admin/update/'.$article->id)}}" method="post">
1717
{{ csrf_field() }}
1818
<input type="hidden" name="_method" value="PUT"/>
1919
<div class="form-group">
@@ -22,6 +22,13 @@
2222
<div class="form-group">
2323
<textarea name="body" id="mytextarea">{{$article->body}}</textarea>
2424
</div>
25+
<div class="form-group">
26+
<div class="row">
27+
<div class="col-md-12"><img width="100%" class="bd-placeholder-img card-img-top" src="{{url('uploads/'.$article->thumbnail)}}"/></div>
28+
<div class="col-md-12"><input class="form-control" type="file" name="thumbnail" accept="image/*" /></div>
29+
</div>
30+
31+
</div>
2532
<div class="form-group">
2633
<input class="btn btn-success" type="submit" value="تعديل"/>
2734
</div>

resources/views/welcome.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
@foreach ($articles as $article)
1616
<div class="col-md-4">
1717
<div class="card mb-4 shadow-sm">
18-
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
18+
<img width="100%" class="bd-placeholder-img card-img-top" src="{{url('uploads/'.$article->thumbnail)}}"/>
1919
<div class="card-body">
2020
<p class="card-text">
2121
<a href="{{url('article/'.$article->id)}}">

0 commit comments

Comments
 (0)