2017-04-17 89 views
1

我正在構建一個Laravel Web應用程序,我需要一個動態圖像庫,我構建了一個後端管理面板,可以添加圖像,我成功添加圖像並將其保存到數據庫,但無法編輯或刪除它們。Laravel 5.4圖片庫

錯誤是:

ErrorException在UrlGenerationException.php線17:缺少爲〔路線:galleries.update]所需的參數[URI: 後端/畫廊/ {畫廊}]。 (查看:/var/www/html/tryout101/resources/views/backend/gallery/edit.blade.php)

這是我的路線代碼:

<?php 
    /*backend access*/ 
    Route::group(['prefix' => '/backend'], function() { 
    /*The route Dashboard main page */ 
    Route::get('/' , '[email protected]')->name('dashboard'); 
    Route::resource('galleries' , 'GalleriesController'); 

    }); 

這個控制器代碼:

 <?php 

     namespace App\Http\Controllers; 
     use App\Gallery; 
     use Illuminate\Http\Request; 
     use Image; 
     use Illuminate\Support\Facades\Input; 

     class GalleriesController extends Controller 
    { 
/** 
* Display a listing of the resource. 
* 
* @return \Illuminate\Http\Response 
*/ 
public function index() 
{ 
    $gallery = Gallery::all(); 
return view('backend.gallery.library', compact('gallery')); 
} 

/** 
* Show the form for creating a new resource. 
* 
* @return \Illuminate\Http\Response 
*/ 
public function create() 
{ 
    return view('backend.gallery.uploadform'); 
} 

/** 
* Store a newly created resource in storage. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\Response 
*/ 
public function store(Request $request) 
{ 
    $gallery = new Gallery(); 
    $this->validate($request, [ 
    'title' => 'required', 
    'image' => 'required' 
    ]); 

    $gallery->title = $request->title; 
    $gallery->description = $request->description; 
    if($request->hasFile('image')) { 
    $file = Input::file('image'); 
    $filename = time(). '-' .$file->getClientOriginalName(); 
    $gallery->image = $filename; 
    $file->move(public_path().'/images/', $filename); 
    } 
    $gallery->save(); 
    return $this->create()->with('success', 'Image Uploaded 
    Successfully'); 
} 

/** 
* Display the specified resource. 
* 
* @param \App\Gallery $gallery 
* @return \Illuminate\Http\Response 
*/ 
public function show(Gallery $gallery) 
{ 
    // 
} 

/** 
* Show the form for editing the specified resource. 
* 
* @param \App\Gallery $gallery 
* @return \Illuminate\Http\Response 
*/ 
public function edit(Gallery $gallery) 
{ 
    if(!$gallery){ 
     return redirect('dashboard')->with(['fail'=>'post not found']); 
    } 
    return view('backend.gallery.edit',compact('gallery')); 
} 

public function update(Request $request, Gallery $gallery) 
{ 
     $this->validate($request, [ 
     'title'=>'required|max:120', 
     'image'=>'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048' 
     ]); 

     $gallery->title = $request->title; 
     $gallery->description = $request->description; 
     if($request->hasFile('image')) { 
     $file = Input::file('image'); 
     $filename = $file->getClientOriginalName(); 
     $gallery->image = $filename; 
     $file->move(public_path().'images/', $filename); 
     } 
     $gallery->update(); 
     return Redirect()->route('dashboard')->with(['success'=> 'post 
     successfully updated']); 
    } 

    public function destroy(Gallery $gallery) 
    { 
    // 
    } 
} 

/這是我的編輯頁面/

@extends('layouts.backend-master') 
    @section('styles') 
    <link rel="stylesheet" href=""> 
    @endsection 
    @section('content') 
    @if (count($errors) > 0) 
    <div class="alert alert-danger"> 
    <strong>Whoops!</strong> There were some problems with your input. 
    <br><br> 
    <ul> 
     @foreach ($errors->all() as $error) 
     <li>{{ $error }}</li> 
     @endforeach 
    </ul> 
    </div> 
@endif 

<h1>File Upload</h1> 
<form action="{{route('galleries.update')}}" method="post" 
enctype="multipart/form-data"> 

<div class="input-group"> 
    <label for="title">Title</label> 
    <input type="text" name="title" id="title"/> 
</div> 

<div class="input-group"> 
    <label for="description">Description</label> 
    <textarea type="text" name="description" id="description" rows="8"> 
</textarea> 
</div> 

<div class="input-group"> 
    <label for="image">Select image to upload:</label> 
    <input type="file" name="image" id="file"> 
</div> 

<button type="submit" class="btn">Update</button> 
<input type="hidden" name="_token" value="{{Session::token()}}"> 
<input type="hidden" name="gallery" value="{{$gallery->id}}"> 
</form> 
@endsection 
@section('scripts') 
@endsection 

回答

1

的事實是,路線「galleries.update」需要一個畫廊

因此,你應該給他你想要去的這條路呼叫路由功能時,該畫廊

因此,我認爲,改變

route('galleries.update') 

route('galleries.update', $gallery) 

會使一切都很好

+0

非常感謝。 –

+0

不客氣。 –