Laravel Bild-und-Bild-Größe validation

Liebe StackOverflow Gemeinschaft

Ich habe eine harte Zeit, herauszufinden, warum mein Bild-Validierung funktioniert nicht wie es soll. Ich bin Validierung auf der Tatsache, dass die form::Datei() soll ein Bild sein, wie auch als 400x300 px in der Größe. Für diese, ich benutze das Modul image-validator von cviebrock (https://github.com/cviebrock/image-validator). Es denke, es arbeitete, bevor ich neu installiert, mein OS, aber ich bin mir nicht sicher, weil es sein könnte, dass ich vielleicht versehentlich gelöscht oder geändert wird, einige gute code.

Ich bin 99% positive, dass ich die Validierung auf dem \Input:file('name'), denn ich habe ein var dump auf die validation-Attribut, das sollte halten Sie die Datei. Sie können sehen, diese var-dump unten (var_dump von $input['fotofile']):

object(Symfony\Component\HttpFoundation\File\UploadedFile)[9]
  private 'test' => boolean false
  private 'originalName' => string '400x300real.gif' (length=15)
  private 'mimeType' => string 'image/gif' (length=9)
  private 'size' => int 1558
  private 'error' => int 0

Mein validator-Klasse, und ein basevalidator:

<?php

namespace validation;

class NewPostValidator extends BaseModelValidator {
    protected $rules = [
        "title" => "required|min:10",
        "beschrijving" => "required|between:175,1000" ,
        "foto"         => "required",
        "fotofile"     => "image|image-size:400,300",
        "thumbnailfile"=> "image|image-size:200,150"
    ];
    protected $messages = [
        "title.required" => "U heeft geen titel opgegeven.",
        "title.min"      => "Een titel moet bestaan uit minimum 10 tekens.",
        "beschrijving.required" => "U heeft geen beschrijving opgegeven.",
        "beschrijving.between"  => "Een beschrijving moet uit minimaal 175 en maximaal 1000 tekens bestaan.",
        "foto.required"         => "U heeft geen foto gekozen.",
        "fotofile.image"        => "Uw foto is geen afbeelding.",
        "fotofile.image-size"   => "Uw foto moet 400x300 pixels zijn.",
        "thumbnailfile.image"   => "Het thumbnailveld bevat geen afbeelding.",
        "thumbnailfile.image-size" => "Uw thumbnail moet 200x150 pixels zijn."
    ];
}

Bevor die Eingabe verarbeitet wird, in meiner Klasse UserRepository, ich ordnen Sie die Eingabe mit einem statischen fetchinput Methode. Ich bin mir bewusst, dass dies nicht 100% sauberen code, aber ich bin immer noch ein student, so bin ich noch lernen:

<?php

namespace InputFetcher;

use InputFetcher\InputFetcher;

class PostFetcher implements InputFetcher {

    public static function fetchInput( $input ){
    if(!$input['update']){
        $input['id'] = null;
    }
    $post = \Post::where('id', '=', $input['id'])->get();
        $now = new \DateTime("now");


        if(null !== \Input::file('foto')){
            $foto = \Input::file('foto');
            $input['foto'] = "/images/" . $now->format('Y-m-d') . $foto->getClientOriginalName() ;

            $input['fotofile'] = $foto;
        } else if($input['update']) {

            $input['foto'] = $post[0]->foto;
        }
        if(null !== \Input::file('thumbnail')){
            $thumb = \Input::file('thumbnail');
            $input['thumbnail'] = "/images/" . $now->format('Y-m-d') . $thumb->getClientOriginalName();
            $input['thumbnailfile'] = $thumb;

        } else if($input['update']) {

            $input['thumbnail'] = $post[0]->thumbnail;
        }
        $input['userid'] = \Auth::user()->id;

        return $input;
    }
} 

Wenn ich die form habe ich eine Antwort bekommen, die zeigt eine Validierung Fehlermeldung, da die Datei nicht ein Bild und ist nicht 400x300 px in der Größe.

Habe ich die Suche im web und stackoverflow für Stunden, so dass ich bin wirklich verzweifelt für diese zu arbeiten. Wenn das Problem liegt nicht in meinem code: ich habe das Modul von cviebrock zu meinem Komponist.json und aktualisiert durch mein terminal.

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.2.*",
        "cviebrock/image-validator": "1.0.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php",
            "app/classes/"

        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

Vielen Dank für Ihre Zeit.

Ps: sorry, wenn mein Englisch schlecht ist.

Ps *: ich dachte, dass es nützlich sein könnte für Euch, um den code hinzuzufügen von meiner PostRepository Klasse zu. Die Methode make( $input (was ist \Input::all() ) wird aufgerufen, durch meine PostController und gibt eine Antwort zurück gibt.

<?php

namespace Repository;
use InputFetcher\PostFetcher;
use Exceptions\ValidationException;
use validation\NewPostValidator;
class PostRepository extends BaseRepository {

    protected $validators = [
        'newpost' => 'NewPostValidator'
    ];

    public function __construct( \Post $postModel ){
        $this->model = $postModel;
    }

    public function make ( $input ){

        $this->validator = \App::make( $this->getValidator( 'newpost' ) );
        $input['update'] = false;
        $input = PostFetcher::fetchInput( $input );
        $foto = \Input::file('foto');
        $thumb = \Input::file('thumbnail');
        $now = new \DateTime('now');
        if( null!==$foto ){
            $foto->move('images', $now->format('Y-m-d') . $foto->getClientOriginalName());
        }
        if( null!==$thumb ){
            $thumb->move('images', $now->format('Y-m-d') . $thumb->getClientOriginalName());
        }

        $result = parent::make($input);

        if( null!==$this->messageBag ){
            throw new ValidationException( implode( "&", $this->messageBag ) );
        }

        return $result; 
    }

    public function update ( $id, $input ){

        $this->validator = \App::make( $this->getValidator( 'newpost' ) );
        $input['id'] = $id;
        $input['update'] = true;
        $input = PostFetcher::fetchInput( $input );

        $foto = \Input::file('foto');
        $thumb = \Input::file('thumbnail');
        $now = new \DateTime('now');

        if( null!==$foto ){
            $foto->move('images', $now->format('Y-m-d') . $foto->getClientOriginalName());
        }
        if( null!==$thumb ){
            $thumb->move('images', $now->format('Y-m-d') . $thumb->getClientOriginalName());
        }

        $result = parent::update( $id, $input );

        if( null!==$this->messageBag ){
            throw new ValidationException( implode( "&", $this->messageBag ) );
        }

        return $result; 
    }

    public function findAll(){
        $posts = \DB::table('posts')
        ->leftJoin('user', function( $join ){
            $join->on( 'posts.userid', '=', 'user.id' );
        })
        ->orderby( 'created_at', 'desc' )->paginate('5', array( 'posts.id', 'posts.article', 'posts.beschrijving', 
                'posts.title', 'user.naam', 'user.voornaam',
                'posts.foto', 'posts.thumbnail', 'posts.created_at',
                'posts.challenge' ) );
        return $posts;
    }

    public function find( $id ){
        $post = parent::find( $id );
        $author = \DB::table( 'user' )->join('posts', 'user.id', '=', 'posts.userid')
                  ->where('posts.id', '=', $id)->get( array('naam', 'voornaam') );
        return array( 'post' => $post , 'author' => $author );                
    }

    public function postOverview(){
        return \DB::table('posts')->get();
    }

}

P. S. ** : Hier ist ein var dump von der validator-Objekt

object(validation\NewPostValidator)[242]
  protected 'rules' => 
    array (size=5)
      'title' => string 'required|min:10' (length=15)
      'beschrijving' => string 'required|between:175,1000' (length=25)
      'foto' => string 'required' (length=8)
      'fotofile' => string 'image|image-size:400,300' (length=24)
      'thumbnailfile' => string 'image|image-size:200,150' (length=24)
  protected 'messages' => 
    array (size=9)
      'title.required' => string 'U heeft geen titel opgegeven.' (length=29)
      'title.min' => string 'Een titel moet bestaan uit minimum 10 tekens.' (length=45)
      'beschrijving.required' => string 'U heeft geen beschrijving opgegeven.' (length=36)
      'beschrijving.between' => string 'Een beschrijving moet uit minimaal 175 en maximaal 1000 tekens bestaan.' (length=71)
      'foto.required' => string 'U heeft geen foto gekozen.' (length=26)
      'fotofile.image' => string 'Uw foto is geen afbeelding.' (length=27)
      'fotofile.image-size' => string 'Uw foto moet 400x300 pixels zijn.' (length=33)
      'thumbnailfile.image' => string 'Het thumbnailveld bevat geen afbeelding.' (length=40)
      'thumbnailfile.image-size' => string 'Uw thumbnail moet 200x150 pixels zijn.' (length=38)
  protected 'attributes' => 
    array (size=10)
      '_token' => string 'Jsh9xKnbAi7NUJhGA0b7l8J0yJvnerL85i9Peeh1' (length=40)
      'title' => string '' (length=0)
      'beschrijving' => string '' (length=0)
      'article' => string '' (length=0)
      'thumbnail' => null
      'foto' => string '/images/2014-07-25400x300real.gif' (length=33)
      'update' => boolean false
      'id' => null
      'fotofile' => 
        object(Symfony\Component\HttpFoundation\File\UploadedFile)[9]
          private 'test' => boolean false
          private 'originalName' => string '400x300real.gif' (length=15)
          private 'mimeType' => string 'image/gif' (length=9)
          private 'size' => int 1558
          private 'error' => int 0
      'userid' => string '24' (length=2)
  protected 'validator' => null
  • Habe ich noch nicht getestet, aber könnte es sein, weil Sie über Bild-Größe, wenn in der Dokumentation heißt es image_size (Unterstrich)?
Schreibe einen Kommentar