2016-09-26 4 views
-1

내 Laravel 웹 응용 프로그램 중 하나에 대해 에있는 모든 요청 매개 변수 (게시와 가져 오기)를 데이터베이스에 기록하려면 $request->all() 방법을 사용하고 있습니다. 사용자가 파일을 업로드하려고 할 때 예외가 발생합니다.Laravel 요청에서 비 파일 매개 변수 만 선택

그 이유는 요청에서 Serializable 매개 변수 만 선택할 수 있기를 원하기 때문입니다 (요청을 가져올 때와 가져 오기 위해) 또는 파일을 제외한 모든 요청 매개 변수를 선택하는 방법이 필요합니다.

Request::except([])은 예외 메서드에서 파일 매개 변수 이름을 제공해야하므로 나를 위해 작동하지 않습니다. 귀하의 경우에는

+0

매개 변수가 알려진 경우 $ request-> except ([ 'file_field_name']);을 사용할 수 있습니다. 편집하기에 너무 빨랐습니다. –

+0

하지만 모든 매개 변수는 나에게 알려지지 않으므로'except' 메소드를 사용할 수 없습니다 ... @TimvanUum –

+0

가장 좋은 옵션은 $ request-> all()을 반복하는 것입니다 ... 제어 흐름 만들기 그것은 (도트) 확장자를 가진 입력을 면제 해 줄 것입니다 ... – victor

답변

1

답 중 어떤 것도 나에게 도움이되지 않았기 때문에 많은 독서와 laravel에 대한 파기가 있었지만 여전히 찾고 있던 특정 솔루션을 찾을 수 없었기 때문에 Laravel 's를 사용하는 대신 작은 해킹을 수행했습니다. 요청 객체와 거기에서 매개 변수를 가져 오기 나는 간단히 $_REQUEST 매개 변수로 PHP를 사용했다.

예 :

$non_file_parameters = $_REQUEST;

$_REQUEST 는 모두 우리가 $_FILES 슈퍼 전역 변수가 파일에 대한 핵심 PHP에서 파일 매개 변수를 제외하고 포스트 매개 변수뿐만 아니라 사촌을 취득해야합니다.

귀하의 노력에 감사드립니다 ...

1

한 번 시험이 디버그 코드를 확인하시기 바랍니다, 당신이 내 프로젝트에서

$allRequestParams = array_map(function($input) { 
     return !is_array($input) ? $input : false; 
    }, $request->all()); 
    echo '<pre>'; 
    print_r($allRequestParams); 
    echo '<pre/>'; 
    die; 
2

현재 작업에 사용하려는 수 있습니다, 난,

다음과 같은 많은 분야를 제외하고이 사용
$input = $request->except('first_name', 'middle_name', 'last_name', 'address',...);  

나를 위해 잘 작동합니다.
나는 모든 나머지 값을 $ 입력에 저장하고 그 입력 변수의 값을 저장합니다.

시도해보십시오.