2016-08-05 5 views
0

저는 지금 당분간이 문제에 시달렸습니다. 여기 코드가 있습니다.루멘 FatalThrowableError on validation

public function store(Request $request) 
{ 
    $validator = Validator::make($request->all(), [ 
     'name' => 'required|max:100' 
    ]); 
    if ($validator->fails()) { 
     //do something 
    } 
} 

문제는 내가 바로 다음과 같은 메시지가 내 얼굴에 FatalThrowableError를 얻을 수 있습니다 :

배열의 멤버 함수 매개 변수()를 호출

내가 잘못하고있는 것을 찾을 수 없다. 여기 좀 도와 줘서 고맙다. 일 직전 그리고 또한,이 검증을 했어 :

$this->validate($request, [ 
     'name' => 'required|unique:developers|max:100' 
    ]); 

하지만 하나 문제는 내가 어떻게 유효성 검사가 실패했을 때 잡는 방법 몰랐다이다. 이런 식으로 사용할 때 검증 실패를 잡을 수 있습니까? "laravel/루멘 프레임 워크": 버전을 사용

"5.2 *."

+0

어떤 루멘 버전을 사용하고 있습니까? –

+0

"laravel/lumen-framework": "5.2. *" – Serellyn

+0

내 대답은 5.2에 해당했습니다. –

답변

1

FatalThrowableError 예외가 심포니 디버그 ErrorHandler에 의해 일반적으로 발생합니다 낮은 수준의 예외입니다. 루멘에서는 대기열 작업자 인 PhpEngine, 콘솔 커널 및 라우팅 파이프 라인도이를 사용합니다. 당신은 외관을 사용하는 경우

당신이 .env
  • .env.example를 복사했는지 확인 다음

    1. 의 확인, 당신이 라인을 주석 처리 bootstrap/app.php 내부를 사용할 수 있는지 확인하십시오.

    $app->withFacades();

    내부 루멘 다음 중 하나 일 것입니다 5.2.8.

    다음은 실제로 오류가있는 유효한 JSON 객체를 반환합니다. 충분하지 않은 이유를 유추하지 않았습니다. 이처럼 validate 호출을 사용하면 무엇이 좋은지는 실제로 처리되지 않은 엔터티를 의미하는 422 http 상태 코드를 반환한다는 것입니다. 200 상태 코드가 반환을이다 불구하고 외관을 사용

    $app->get('/', function (Request $request) { 
        $this->validate($request, [ 
         'name' => 'required' 
        ]); 
    }); 
    

    은뿐만 아니라 작동합니다.

    $app->get('/', function (Request $request) {   
        $validator = Validator::make($request->only(['name']), [ 
         'name' => 'required' 
        ]); 
    
        if ($validator->fails()) { 
         return ['error' => 'Something went wrong']; 
        } 
    }); 
    

    여전히 Validator::make으로 오지 않는다면 기본 유효성 검사 예외를 사용할 수 있습니다. 좀 해킹 된 것 같아.

    $app->get('/', function (Request $request) { 
        try { 
         $this->validate($request, [ 
          'name' => 'required' 
         ]); 
        } catch (\Illuminate\Validation\ValidationException $e) { 
         // do whatever else you need todo for your use case 
         return ['error' => 'We caught the exception']; 
        } 
    }); 
    
  • +0

    .env 파일과 정면이 제자리에 있었지만 아무런 문제가 없었습니다. 그렇다면 $ validator-> fails()를 사용하여 두 번째 예제를 시도했습니다. 내가 알아 차린 사실 중 하나는 내 것과 정확히 같았지만 한 가지 차이점이 있습니다. 그래서 $ request-> all()에서 오류가 발생합니다. 왜 그렇게 할 수 없는지 궁금합니다.그리고 한 가지 더 질문합니다. 예를 들어 라우팅에서 유효성 검사가 진행 중입니다. 내 컨트롤러에 내 문제가 있습니다. 문제입니까? – Serellyn

    +0

    이상한데, $ request-> all()과 $ request-> only ([ 'name', 'surname'])는 모두 배열을 반환합니다. 그러나 $ request-> all()은 array_replace_recursive를 사용하고 입력을 업로드 된 파일과 결합합니다. 그런 다음 유효성 검사를 컨트롤러로 옮기는 데 아무런 차이가 없으므로 동일한 Request 객체를 사용합니다. –

    +0

    음 레온, 도와 줘서 고마워. :) – Serellyn