2017-08-21 6 views
6

私は非常に奇妙な問題があります。フォームを送信すると、サーバー側の検証でエラーが発生します。フォームを送信すると、私に与えメソッドの検証が存在しません - Laravel 5.4

namespace App\Http\Controllers; 

use Newsletter; 
use Illuminate\Http\Request; 

class SubscriptionController extends Controller 
{ 
    public function subscribe(Request $request) 
    { 
     $request->validate([ 
      'email' => 'required|email', 
      ]); 
    } 
} 

BadMethodCallException メソッドの検証は存在しません

は、ここに私のシンプルなコントローラです。

それはに従って動作するはずです:ドキュメントで

https://laravel.com/docs/5.4/validation

+0

リンクされたページは '$要求 - > validate'の一切の言及はありません。 – apokryfos

+0

@apokryfosはい、私もそれが後で、私の悪いことを発見しましたが、それは '$ this-> validate($ request、...)の複数の言及を持っています。 –

答えて

14

は言った:

$this->validate($request, [ 
    'email' => 'required|email', 
]); 

この文字列 - 作品:)

4

まあ5.4でそのもはや利用できないことを意味しますしかしコントローラで利用可能です

試してみてください。

$this->validate($request, [ 
    'email' => 'required|email', 
]); 
6

あなたはこれを試してみてください:

$validateFields = array('email' => 'required|email'); 

$this->validate($request, $validateFields); 

OR

$this->validate($request, [ 
    'email' => 'required|email' 
]); 

があなたのためにこの作品を願っています!!!!

+0

@Parth Vora:嬉しいことです。私の答えがあなたの解決策なら、私の答えを受け入れてください。 –

2
**$validator = \Validator::make($request->all(), [ 
      'mobile_number' => 'required', 
      ]);** 

     if ($validator->fails()) { 
      return redirect()->back() 
      ->withErrors($validator) 
      ->withInput(); 
     } 

これはあなたのために働く希望..

1

あなたは検証サービスプロバイダを使用することができます。

 namespace App\Http\Controllers; 

    use Newsletter; 
    use Illuminate\Http\Request; 
    use Validator; 

    class SubscriptionController extends Controller 
    { 
      public function subscribe(Request $request) 
      { 
        $request->validate($request->all(),[ 
        'email' => 'required|email', 
        ]); 
      } 
0

この2つのパッケージ 運のベスト

が点灯\サポート\ファサード\バリデータを使用して追加することができます。 Illuminate \ Foundation \ Auth \ RegistersUsersを使用します。

0

実際に正しいコントローラを追加する場合は、validateメソッドが既に含まれている必要があります。以下のコントローラを追加してみてください。代わりに

use App\Http\Controllers\Controller;

関連する問題