方法验证不存在 - Laravel 5.4
Posted
技术标签:
【中文标题】方法验证不存在 - Laravel 5.4【英文标题】:Method validate does not exist - Laravel 5.4 【发布时间】:2018-01-29 10:24:59 【问题描述】:我有一个非常奇怪的问题。当我提交表单时,它会引发服务器端验证错误。
这是我的简单控制器:
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
【问题讨论】:
链接页面没有提到$request->validate
。虽然它多次提到$this->validate($request,...)
@apokryfos 是的,我后来也发现了,我的错。
【参考方案1】:
在文档中说:
$this->validate($request, [
'email' => 'required|email',
]);
这个字符串 - 有效:)
【讨论】:
也适用于 Lumen。【参考方案2】:这意味着它在 5.4 中不再可用,但它在控制器中可用
试试:
$this->validate($request, [
'email' => 'required|email',
]);
【讨论】:
【参考方案3】:你应该试试这个:
$validateFields = array('email' => 'required|email');
$this->validate($request, $validateFields);
或
$this->validate($request, [
'email' => 'required|email'
]);
【讨论】:
【参考方案4】: $validator = \Validator::make($request->all(), [
'mobile_number' => 'required',]);
if ($validator->fails())
return redirect()->back()
->withErrors($validator)
->withInput();
希望这对你有用..
【讨论】:
【参考方案5】:您可以使用 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】:让我们添加这两个包 祝你好运
使用 Illuminate\Support\Facades\Validator; 使用 Illuminate\Foundation\Auth\RegistersUsers;
【讨论】:
请不要发布未经测试的答案。【参考方案7】:其实如果你添加了正确的控制器, validate 方法应该已经包含了。您可以尝试添加以下控制器。
相反:
use App\Http\Controllers\Controller;
【讨论】:
【参考方案8】:更改后添加验证器服务并清除缓存
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
【讨论】:
【参考方案9】: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);
【讨论】:
以上是关于方法验证不存在 - Laravel 5.4的主要内容,如果未能解决你的问题,请参考以下文章