web-dev-qa-db-ja.com

メソッド検証は存在しません-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メソッドvalidateは存在しません。

次のように動作するはずです。

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

14
Parth Vora

文書では:

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

この文字列-動作:)

31
arku

これを試してください:

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

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

または

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

5.4では使用できなくなりましたが、コントローラーでは使用可能です

試してください:

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

実際に適切なコントローラーを追加する場合、validateメソッドが既に含まれているはずです。以下のコントローラーを追加してみてください。

代わりに:use App\Http\Controllers\Controller;

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

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

これがあなたのために働くことを願って..

3
Vijay Trada

Validatorサービスプロバイダーを使用できます。

     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',
                  ]);
           }
1
Sonali Bhat