2016-07-16 2 views
0

컨트롤러 찾을 수 없습니다 :Laravel 경로 파일은 내가 아주 간단한 routes.php 파일이

<?php 

Route::get('/', '[email protected]'); 

그리고 앱에있는 간단한 TracksController.php 파일을 \ HTTP를 컨트롤러 \

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Track as Track; 

class TracksController extends Controller 
{ 
    function index(){ 

     $tracks = Track::latest->get(); 
     return view('tracks')->with(compact('tracks')); 

    } 

} 

그러나 때마다 나는 내가 할 수있는 그 밖의 무엇을 아무 생각

ReflectionException in Route.php line 280: 
Class App\Http\Controllers\TracksController does not exist 

: 나는이 오류가 그 길에 액세스하려고합니다. 내가 가진 :

  • 실행 작곡가 경로는
  • 파일에 TracksController의 네임 스페이스 및/또는 fullpath에 강제 저장/* 폴더
  • 실행 PHP 장인 맑은 컴파일
  • 검사 권한을 dumpautoload

하지만 아무 것도 작동하지 않는 것 같습니다.

나는 작곡가가 생성 한 vendor/composer/autoload_classmap.php 파일도 검사 했으므로 거기서 TracksController 파일을 찾을 수 없습니다.

실마리가 있습니까?

+0

하는 함수'기능 지수()를 확인 {}'('public' 기능 지수() {}' –

+0

함수를 공개하고, 그 안에 모든 것을 제거하고이'DD를 넣어해야합니다 테스트 ');'를 사용하여'App App \ Track as Track;을 제거하고 페이지에 test라는 단어가 표시되면 대답이 확실 함 –

+0

당신의 질문에 오타가 있지만 명령은 하이픈과 함께'composer dump-autoload'이어야합니다. 오타가 아닌 경우이를 시도하여 문제가 해결되는지 확인하십시오. – patricus

답변

1

그래서 patricus가 public 수정자를 입력했기 때문에 이전의 대답이 잘못되었습니다. 문제가 $tracks = Track::latest->get();

으로 변경되고 설정해야합니다.

+0

가시성이 정의되어 있지 않으면 PHP의 공개 설정은 기본적으로 공개됩니다. 코드를 지정하는 것이 좋지만 코드가 작동하는 방식은 변경하지 않아도됩니다. – patricus

+0

나는 처음부터 공개적으로 시도하지 않은 공공, 보호, 사적인 것을 언급하는데 항상 사용되어 왔습니다. 지식, patricus –

+0

문제 감사합니다. 나는 항상 가시성을 지정한다. – patricus

0

Linux를 사용하는 경우 파일 이름과 경로는 대소 문자를 구분합니다. 기본 composer.json 파일에서 자동 로딩을 변경하지 않았다고 가정하면 PHP는 파일이 app\Http\Controllers\TracksController.php에 위치 할 것으로 예상합니다. 귀하의 질문에, 당신은 그것이 App\...에 위치하고 지정했습니다.

이는 app을 사용하면 하나가 app에 다시 App 디렉토리의 이름을 변경해야하거나 당신이이 App 디렉토리에서 자동로드에 알려 당신의 composer.json 파일을 업데이트 할 필요가 없으며, 질문에 오타가 아니었다 가정하면 디렉토리 :

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "App/" 
    } 
}, 
관련 문제