问题
I have a very weird problem. When I'm submitting the form, it throws an error with server-side validation.
Here is my simple controller:
namespace App\Http\Controllers;
use Newsletter;
use Illuminate\Http\Request;
class SubscriptionController extends Controller
{
public function subscribe(Request $request)
{
$request->validate([
'email' => 'required|email',
]);
}
}
Submitting the form gives me:
BadMethodCallException Method validate does not exist.
it should work according to:
https://laravel.com/docs/5.4/validation
回答1:
In docs said:
$this->validate($request, [
'email' => 'required|email',
]);
This string - works :)
回答2:
You should try this:
$validateFields = array('email' => 'required|email');
$this->validate($request, $validateFields);
OR
$this->validate($request, [
'email' => 'required|email'
]);
回答3:
Well means its no longer available in 5.4 however its available in controller
Try:
$this->validate($request, [
'email' => 'required|email',
]);
回答4:
Actually If you add the right controller, validate method should be already included. You can try adding below controller.
Instead:
use App\Http\Controllers\Controller;
回答5:
$validator = \Validator::make($request->all(), [
'mobile_number' => 'required',]);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
Hope this works for you..
回答6:
You can use the Validator service provider.
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',
]);
}
回答7:
lets add these two packages Best of luck
use Illuminate\Support\Facades\Validator; use Illuminate\Foundation\Auth\RegistersUsers;
来源:https://stackoverflow.com/questions/45795508/method-validate-does-not-exist-laravel-5-4