mardi 4 avril 2017

Laravel Image Upload Not Working

I am working on a simple CMS, where I have a problem with the image-upload, because it just refreshes the create/edit-page. It works when I comment out the image part.

This is my code:

public function create()
{
    $packages = Package::all();

    return view('packages.create')->withPackages($packages);
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $this->validate($request, array(

        'title'     =>  'required|max:30',
        'content'   =>  'required|max:255',
        'price'     =>  'required|max:15',
        'icon'      =>  'required|image'

    ));

    $package = new Package;

    $package->title = $request->title;
    $package->content = $request->content;
    $package->price = $request->price;

    if ($request->hasFile('icon')){
        $image = $request->file('icon');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $location = public_path('img/' . $filename);
        Image::make($image)->resize(300,300)->save($location);

        $package->image = $filename;
    }

    $package->save();

    return redirect()->route('packages.index');
}

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

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    $package = Package::find($id);
    return view('packages.edit')->withPackage($package);
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
     $this->validate($request, array(

        'title'     =>  'required|max:30',
        'content'   =>  'required|max:255',
        'price'     =>  'required|max:15',
        'icon'      =>  'required|image'

    ));

    $package = Package::find($id);

    $package->title = $request->title;
    $package->content = $request->content;
    $package->price = $request->price;

    if ($request->hasFile('icon')){
    //Add new photo
        $image = $request->file('icon');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $location = public_path('img/' . $filename);
        Image::make($image)->resize(300,300)->save($location);

        $oldFilename = $package->image;
    //Update DB
        $package->image = $filename;

     //Delete the old photo
        Storage::delete($oldFilename);
    }

    $package->save();

     //Set flash data with success message
    Session::flash('success', 'Pakkeløsningen blev opdateret!');

    // Redirect with flash data to posts.show
    return redirect()->route('packages.index'); 
}

And this is my create.blade.php for the PackageController

        {!! Form::open(['route' => 'packages.store']) !!}

            
            

            
            

            
            

            
            

            

        {!! Form::close() !!}

Aaaand my routes, in case that is where I'm missing something

Route::resource('packages', 'PackageController');

I do have the Intervention Image in my provider and aliases, and I do have them namespaced in m controller like so:

namespace App\Http\Controllers;
use App\Package;
use Session;
use Image;
use Storage;

Thanks in advance! And I hope I am not troubling anyone with stupid beginner questions :)



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire