2016-05-19 18 views
0

私は、コントローラ内部のアップロードした画像のための画像dimensions validation ruleを使用しようとしている:寸法検証ルールがvalidateDimensionsを見つけることができません()

namespace App\Http\Controllers; 

use App\ClassCategory; 
use App\Http\Requests; 
use Illuminate\Http\Request; 
use Symfony\Component\HttpFoundation\File\UploadedFile; 
use Validator; 

class ClassCategoryController extends Controller { 
    public function store(Request $request) { 
    $validator = Validator::make($request->all(), [ 
     'image' => 'dimensions:min_width=300,min_height=300' 
    ]); 

    if ($validator->fails()) { // This is where the expection is thrown. 
     // ... 
    } 
    } 
} 

しかし、それは次の例外スロー:

BadMethodCallException in Validator.php line 3181: 
Method [validateDimensions] does not exist. 

in Validator.php line 3181 
at Validator->__call('validateDimensions', array('image', 'ballet.jpg', array('min_width=100', 'min_height=200'), object(Validator))) in Validator.php line 484 
at Validator->validate('image', 'Dimensions') in Validator.php line 424 
at Validator->passes() in Validator.php line 449 
at Validator->fails() in ClassCategoryController.php line 42 
at ClassCategoryController->store(object(Request)) 
at call_user_func_array(array(object(ClassCategoryController), 'store'), array(object(Request))) in Controller.php line 80 
at Controller->callAction('store', array(object(Request))) in ControllerDispatcher.php line 146 
at ControllerDispatcher->call(object(ClassCategoryController), object(Route), 'store') in ControllerDispatcher.php line 94 
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
... 

クラスをControllerIlluminate\Foundation\Validation\ValidatesRequestsを使用します。私はここで何が欠けていますか?

UPDATE

今後の参考のために、私は自分のフォームでenctype attributeが含まれていなかったので、私はanother exceptionを得ていました。あなたがファイルをアップロードしている場合、これは必要とされている:

<form enctype="multipart/form-data" method="post"></form> 

答えて

1

これは、あなたがLaravelの異なるバージョンを使用している場合に発生する可能性があります。あなたはLaravel 5.2を使用していることを確認しましたが、古いバージョンではありません(Laravel 5.1のように、dimensionsは利用できませんでした)。

あなたは、次のartisanのコマンドを実行して、バージョンを確認することができますに

Laravel Framework version 5.2.29 

UPDATE

実行composer update

php artisan --version 

をあなたは、その後のようなものが表示されるはずですダウンローアd Laravel v5.2.32

あなたは方法は、コマンドgrep -ri 'validateDimensions' vendor/*を実行して存在し、あなたが見るべきであることを確認することができます

vendor/laravel/framework/src/Illuminate/Validation/Validator.php: protected function validateDimensions($attribute, $value, $parameters) 

この機能はLaravel recentlyに加え、5月17日2016

にLaravelのv5.2.32にリリースされました。
+0

はい、私はLaravel 5.2: 'Laravel Framework version 5.2.31'を使用しています。 – Raph

+0

Laravelの以前のバージョンから5.2にアップグレードしましたか? –

+0

いいえ、私は最初からバージョン5.2を使って新しいプロジェクトを開始しました。それはあなたのために働くのですか? – Raph

0

useキー単語が使わ一部をインポートするファイルにつきPHP で使用されています。 ので、あなたのClassCategoryControllerページに

use Illuminate\Foundation\Validation\ValidatesRequests;ステートメントを宣言しなければなりません。

http://php.net/manual/en/language.namespaces.importing.php

、その後、次のようにクラスにuseステートメントを追加します。

class ClassCategoryController extends Controller { 
    use ValidatesRequests; 
    public function store(Request $request) {..... 
+0

私もこれを試しましたが、違いはありません。同じ例外がスローされます。 – Raph

+0

クラス内でこのuse文 'use ValidatesRequests;'を追加します。 –

+0

私もそれを試みました。まだ例外がスローされます。 – Raph

関連する問題