2016-04-09 4 views
6

Я только что начал изучать laravel. Я использую Laravel 5.2.29 Я получаю сообщение об ошибке при выполнении кода:Метод [validate] не существует ошибка в laravel 5.2

Упс, похоже, что-то пошло не так. BadMethodCallException в строке Controller.php 107: Метод [validate] не существует.

Вот строка ошибки отображается:

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 

Мой код маршрута:

<?php 


Route::group(['middleware' => ['web']], function(){ 

Route::get('/', function() { 
    return view('home'); 
})->name('home'); 

Route::group(['prefix'=>'do'], function(){ 


    Route::get('/{action}/{name?}', [ 
     'uses' => '[email protected]', 
     'as' => 'niceaction' //router name same as ->name('routername') 
    ]); 



    Route::post('/', [ 

     'uses' => '[email protected]', 
     'as' => 'benice' 

    ]); 

}); 

}); 

Мой код контроллера приведен ниже:

<?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); 
} 
} 

Мой базовый основной контроллер " контроллер "имеет следующий код:

<?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; 

} 

Я пропустил что-нибудь ????

ответ

5

Вам необходимо расширить класс App\Http\Controllers\Controller, который использует необходимый признак ValidatesRequests, который реализует необходимый метод validate.

Так что в вашем NiceActionController классе просто удалить эту строку:

use Illuminate\Routing\Controller; 

Таким образом, эта линия:

class NiceActionController extends Controller 

продлит надлежащего Controller класс из того же пространства имен (точнее App\Http\Controllers\Controller) , который включает в себя необходимые черты и который уже расширяет класс Illuminate\Routing\Controller (с псевдонимом BaseController).

+0

Большое спасибо Богдан .... Он работает сейчас ... :) –

+0

Добро пожаловать. – Bogdan

+0

Теперь я не вижу {{$ error}} на моем представлении. Код выглядит следующим образом: 'code' @if (count ($ errors)> 0)

    @foreach($errors->all() as $error) {{ $error }} @endforeach
@endif ........ Я ничего не теряю? –

2

Чтобы отобразить ошибки, просто удалите строку ниже и закрытия )}

Route::group(['middleware' => ['web']], function(){ 

В 5.2, routes.php по умолчанию уже вызывается в контексте [ «промежуточного» =>» web '] от RouteServiceProvider. // Но при генерации маршрутов auth по умолчанию route.php по умолчанию по-прежнему происходит групповой вызов Route :: group, поэтому, если вы удалите это объявление Route :: group // из route.php, приложение корректно показывает ошибки.

Смежные вопросы