方法验证不存在 - Laravel 5.4

时间:2017-08-21 11:05:30

标签: php laravel validation laravel-5 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

9 个答案:

答案 0 :(得分:31)

在docs中说:

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

此字符串 - 有效:)

答案 1 :(得分:7)

你应该试试这个:

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

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

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

希望这对你有用!!!!

答案 2 :(得分:4)

好的意思是它在5.4中不再可用,但它在控制器中可用

尝试:

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

答案 3 :(得分:3)

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

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

希望这对你有用..

答案 4 :(得分:3)

实际上如果添加正确的控制器,则应该已经包含了validate方法。您可以尝试添加以下控制器。

相反: use App\Http\Controllers\Controller;

答案 5 :(得分:1)

您可以使用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',
                  ]);
           }

答案 6 :(得分:0)

让我们添加这两个包 祝你好运

使用Illuminate \ Support \ Facades \ Validator; 使用Illuminate \ Foundation \ Auth \ RegistersUsers;

答案 7 :(得分:0)

更改后添加验证器服务并清除缓存

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Foundation\Validation\ValidatesRequests;

class RecaptchaController extends Controller
{
    public function store(Request $request) {
        $this->validate($request,[
            'name' => 'required',
            'email' => 'required|email',
            'phone' => 'required|min:10',
            'g-recaptcha-response' => 'required|captcha'
        ]);

        return "success";
    }
}

您可以在终端上使用以下 artisan 命令清除缓存。 注意:记得检查你运行命令的目录。

php artisan cache:clear

答案 8 :(得分:0)

You can use regex pattern of this email validation.

protected function validator(array $data)
{
    $messages = array('email.regex' => 'Your email id is not valid.');
    return Validator::make($data, [
        'email' => 'required|email|max:255|regex:/(.*)@myemail\.com/i|unique:users',
     ],$messages);
}