2014-12-30 3 views
1

RESTful 컨트롤러가있는 API Laravel 5 애플리케이션을 작성하고 있습니다. 나는 컨트롤러에이 방법을 정의 destroy 방법이 있습니다Laravel - 파괴를위한 404 Vagrant에서 GET 실행

public function destroy($id) 
{ 
    App::abort(404); 
} 

순간에 내가 그것을 처리하지 않으려하기 때문이다. 내 자원에 대한 DELETE 방법을 사용하는 경우

public function show($id) 
{ 
    die('show method'); 
} 

그래서 출력 show method 404 코드를 얻을 : 이상한 것은 내가 같은 코드를 사용할 때, 나는 404 헤더를 얻을뿐만 아니라 내 공연 방식에서 출력을 얻을 수 있습니다.

나는 내 파괴하는 방법에 넣으면 때문에이 방법을 파괴 시작하고있어 100 % 확신 :

public function destroy($id) 
{ 
    die('destroy'); 
} 
내가 200 상태 코드

I'v와 destroy을 표시 한 것입니다

테스트 그것은 PhpStorm 에서뿐만 아니라이 Firefox addon과 두 경우 모두 결과가 동일합니다.

질문은 - 여기에 무슨 일이 일어나고 데이터가 없거나 빈 데이터가있는 404 코드 만 반환하는 방법입니까?

내가 더이 문제를 조사하고 제가 발견 한

편집 할 수 있습니다. 내 로컬 호스트에 내 응용 프로그램을 실행하는 경우 :

DELETE http://lara404/test/1 

그래야 순수한 404 오류가 발생합니다.

동일한 코드를 복사하여 방랑에서 실행했습니다. 나는 URL을 달린다 :

DELETE http://lara404.app/test/1 

그리고 지금 나는 abcdef와 함께 404 코드를 얻고있다.

나는 기본 설치에서 변경할 수있는 유일한 일

은 다음과 같습니다

<?php namespace App\Http\Controllers; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use App; 

class TestController extends Controller { 

    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 
    public function index() 
    { 
     // 
     dd('xxx'); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return Response 
    */ 
    public function create() 
    { 
     // 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @return Response 
    */ 
    public function store() 
    { 
     // 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function show($id) 
    { 
     // 

     return "abcdef"; 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function edit($id) 
    { 
     // 
    } 

    /** 
    * Update the specified resource in storage. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function update($id) 
    { 
     // 
    } 

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function destroy($id) 
    { 
     // 

     App::abort(404); 
    } 

} 

3 :

1) TestController에 다음 코드를 넣는 routes.php

$router->resource('test','TestController'); 

2)의 시작 부분에 추가) Kernel.php 행에 댓글 달기 :

'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken' 

나는 Laravel 5를 새로 설치 (특정 커밋을 사용하지 않음)했음을 확인했습니다. 정확히 똑같은 일이 발생합니다. localhost에서 시작된 동일한 코드가 잘 작동하고 Vagrant에서 실행되는 동일한 코드가 표시 방법도

에 있습니다.
+0

나는 당신의 문제를 재현 할 수 있습니다.404 페이지의 HTML을 응답으로받습니다. 이미 새로 설치를 시도 했습니까? – lukasgeiter

+0

@lukasgeiter 신선한 설치에서는 ok를 사용하고 있습니다. (필자는 방금 확인한 바 있습니다.)하지만 지금은'composer.json' 파일에서 커밋 버전을 사용해야합니다 : "laravel/framework": "dev-master # 846c935194a036901ba6b4397c8897fa51e19111 "' –

+0

이 버전을 설치했지만 여전히 문제를 재현 할 수 없습니다. 이 특정 설치로 당신이 뭔가를 엉망으로 만든 것 같아요. 또한 고정 버전을 사용하는 이유는 무엇입니까? – lukasgeiter

답변

0

JSON 사용하는 경우이 필요 -

public function destroy($id) 
{ 
    return Response::json(null, 404); 
} 

을 또는이 사용하지 않을 경우 JSON -

public function destroy($id) 
{ 
    return Response::make("", 404); 
} 
+0

또한이 방법을 시도했지만 표시 방법에서 데이터를 가져옵니다. –

+0

질문을 편집하고 컨트롤러 코드를 추가 할 수 있습니까? ? –