Laravelでdropzoneの使い方

– htmlべだ書と同様、ヘッダにdropzoneのcss、フッタにjsを読み込ませればいい。
– dropzoneはfileのnameがglobalで’file’なので、controllerで受け取るときは、$request->file(‘file’);と書く。

/resources/views/media/index.blade.php

@if($photos)
		<table class="table table-striped">
			<thead>
			<tr>
			  <th>Id</th>
			  <th>Name</th>
			  <th>Created date</th>
			</tr>
			</thead>
			<tbody>
				@foreach($photos as $photo)
				<tr>
				  <td>{{$photo->id}}</td>
				  <td><img height="50" src="/{{$photo->file}}"></td>
				  <td>{{$photo->created_at ? $photo->created_at : 'no date'}}</td>
				</tr>
				@endforeach			
			</tbody>
		</table>
		@endif

$ php artisan make:controller AdminMediasController

route.php

Route::group(['middleware'=>'admin'], function(){
	Route::resource('admin/users', 'AdminUsersController');
	Route::resource('admin/posts', 'AdminPostsController');	
	Route::resource('admin/categories', 'AdminCategoriesController');	
	Route::resource('admin/media', 'AdminMediasController');
});

layouts/admin.blade.php

<li>
                                <a href="{{route('admin.medias.index')}}">All Media</a>
                            </li>
s
                            <li>
                                <a href="{{route('admin.medias.create')}}">Upload Media</a>
                            </li>

AdminMediasController.php

 public function index(){
    	$photos = Photo::all();
    	return view('admin.media.index', compact('photos'));
    }
 public function create(){
    	return view('admin.media.create');
    }

https://www.dropzonejs.com/

create.blade.php

@extends('layouts.admin')

@section('styles')
	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.1/min/dropzone.min.css">
@stop

@section('content')

		<h1>Upload Media</h1>

		{!! Form::open(['method'=>'POST', 'action'=>'AdminMediasController@store','class'=>'dropzone', 'files'=>true]) !!}
        {{ csrf_field()}}
      
        <div class="form-group">
            {!! Form::submit('Create Post', ['class'=>'btn btn-primary']) !!}
        </div>
    {!! Form::close() !!}
@stop

@section('scripts')
	<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.1/min/dropzone.min.js"></script>
@stop

AdminMediasController.php

public function store(Request $request){
    	$file = $request->file('file');
    	$name = time(). $file->getClientOriginalName();
    	$file->move('images',  $name);
    	Photo::create(['file'=>$name]);
    }
public function destroy($id){
    	$photo = Photo::findOrFail($id);
    	unlink(public_path(). '/'. $photo->file);

    	$photo->delete();
    	return redirect('/admin/media');
    }

index.blade.php

<tbody>
				@foreach($photos as $photo)
				<tr>
				  <td>{{$photo->id}}</td>
				  <td><img height="50" src="/{{$photo->file}}"></td>
				  <td>{{$photo->created_at ? $photo->created_at : 'no date'}}</td>
				  <td>
				  	{!! Form::open(['method'=>'DELETE', 'action'=>['AdminMediasController@destroy', $photo->id]]) !!}
			        {{ csrf_field()}}
			        
			        <div class="form-group">
			            {!! Form::submit('Delete', ['class'=>'btn btn-danger']) !!}
			        </div>
			        {!! Form::close() !!}

				  </td>
				</tr>
				@endforeach			
			</tbody>

対象ページのみcssやjsをインクルードさせたい時は、ヘッダとフッタのsectionに追加で書き込めば良い😺