方法 [validate] 在 laravel 5.2 中不存在错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/36520958/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Method [validate] does not exist error in laravel 5.2
提问by Tashi Tobgay
I have just started learning laravel. I am using laravel 5.2.29 I am getting error when running the code:
我刚刚开始学习laravel。我正在使用 laravel 5.2.29 运行代码时出现错误:
Whoops, looks like something went wrong. BadMethodCallException in Controller.php line 107: Method [validate] does not exist.
哎呀,看起来出事了。Controller.php 第 107 行中的 BadMethodCallException:方法 [validate] 不存在。
Here is the error line displayed:
这是显示的错误行:
in Controller.php line 107
2.at Controller->__call('validate', array(object(Request), array('action' => 'required', 'name' => 'required'))) in NiceActionController.php line 31
3.at NiceActionController->validate(object(Request), array('action' => 'required', 'name' => 'required')) in NiceActionController.php line 31
4.at NiceActionController->postNiceAction(object(Request))
5.at call_user_func_array(array(object(NiceActionController), 'postNiceAction'), array(object(Request))) in Controller.php line 80
6.at Controller->callAction('postNiceAction', array(object(Request))) in ControllerDispatcher.php line 146
7.at ControllerDispatcher->call(object(NiceActionController), object(Route), 'postNiceAction') in ControllerDispatcher.php line 94
8.at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
9.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
10.at Pipeline->Illuminate\Routing\{closure}(object(Request))
11.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
12.at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
13.at ControllerDispatcher->callWithinStack(object(NiceActionController), object(Route), object(Request), 'postNiceAction') in ControllerDispatcher.php line 54
14.at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\NiceActionController', 'postNiceAction') in Route.php line 174
15.at Route->runController(object(Request)) in Route.php line 140
16.at Route->run(object(Request)) in Router.php line 724
17.at Router->Illuminate\Routing\{closure}(object(Request))
18.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
19.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 64
20.at VerifyCsrfToken->handle(object(Request), object(Closure))
21.at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
22.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
23.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
24.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
25.at ShareErrorsFromSession->handle(object(Request), object(Closure))
26.at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
27.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
28.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
29.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 62
30.at StartSession->handle(object(Request), object(Closure))
31.at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
32.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
33.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
34.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
35.at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
36.at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
37.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
38.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
39.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
40.at EncryptCookies->handle(object(Request), object(Closure))
41.at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
42.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
43.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
44.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 64
45.at VerifyCsrfToken->handle(object(Request), object(Closure))
46.at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
47.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
48.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
49.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
50.at ShareErrorsFromSession->handle(object(Request), object(Closure))
51.at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
52.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
53.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
54.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 62
55.at StartSession->handle(object(Request), object(Closure))
56.at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
57.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
58.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
59.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
60.at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
61.at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
62.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
63.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
64.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
65.at EncryptCookies->handle(object(Request), object(Closure))
66.at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
67.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
68.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
69.at Pipeline->Illuminate\Routing\{closure}(object(Request))
70.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
71.at Pipeline->then(object(Closure)) in Router.php line 726
72.at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
73.at Router->dispatchToRoute(object(Request)) in Router.php line 675
74.at Router->dispatch(object(Request)) in Kernel.php line 246
75.at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
76.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
77.at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
78.at CheckForMaintenanceMode->handle(object(Request), object(Closure))
79.at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
80.at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
81.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
82.at Pipeline->Illuminate\Routing\{closure}(object(Request))
83.at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
84.at Pipeline->then(object(Closure)) in Kernel.php line 132
85.at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
86.at Kernel->handle(object(Request)) in index.php line 54
My route code:
我的路线代码:
<?php
Route::group(['middleware' => ['web']], function(){
Route::get('/', function () {
return view('home');
})->name('home');
Route::group(['prefix'=>'do'], function(){
Route::get('/{action}/{name?}', [
'uses' => 'NiceActionController@getNiceAction',
'as' => 'niceaction' //router name same as ->name('routername')
]);
Route::post('/', [
'uses' => 'NiceActionController@postNiceAction',
'as' => 'benice'
]);
});
});
My Controller code is given below:
我的控制器代码如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
use \Illuminate\Http\Request;
class NiceActionController extends Controller
{
public function getNiceAction($action, $name=null)
{
return view('actions.'.$action, ['name' => $name]);
}
public function postNiceAction(Request $request)
{
$this->validate($request, [
'action' => 'required',
'name' =>'required'
]);
return view('actions.nice', ['action'=>$request['action'],'name'=>$this->transformName($request['name'])]);
}
private function transformName($name)
{
$prefix='KING';
return $prefix.strtoupper($name);
}
}
My base main controller "controller" has following code:
我的基本主控制器“控制器”具有以下代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;
class Controller extends BaseController
{
use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
}
Am i missing anything????
我错过了什么吗????
采纳答案by Bogdan
You need to extend the App\Http\Controllers\Controller
class which uses the necessary ValidatesRequests
trait that implements the required validate
method.
您需要扩展App\Http\Controllers\Controller
使用ValidatesRequests
实现所需validate
方法的必要特征的类。
So in your NiceActionController
class just remove this line:
所以在你的NiceActionController
课堂上只需删除这一行:
use Illuminate\Routing\Controller;
That way this line:
这样这一行:
class NiceActionController extends Controller
Will extend the proper Controller
class from the same namespace (more precisely App\Http\Controllers\Controller
), which includes the necessary traits and which already extends that Illuminate\Routing\Controller
class (aliased as BaseController
).
Controller
将从相同的命名空间(更准确地说App\Http\Controllers\Controller
)扩展正确的类,其中包括必要的特征并且已经扩展了Illuminate\Routing\Controller
该类(别名为BaseController
)。
回答by Marcel Powolny
To display errors, simply remove the line below and the closing )}
要显示错误,只需删除下面的行和结束 )}
Route::group(['middleware' => ['web']], function(){
As of 5.2, routes.php is by default already called in the context of a ['middleware'=>'web'] by RouteServiceProvider. // But in routes.php default generation of auth routes, the Route::group call is still happening by default - so if you delete that Route::group // declaration from routes.php the application then correctly shows errors.
从 5.2 开始,routeServiceProvider 默认已经在 ['middleware'=>'web'] 的上下文中调用了 routes.php。// 但是在routes.php 默认生成的auth 路由中,Route::group 调用仍然在默认情况下发生——所以如果你从routes.php 中删除Route::group // 声明,应用程序就会正确地显示错误。