2016-07-16 10 views
0

ich eine sehr einfache routes.php Datei haben:Laravel Routen-Datei kann nicht Controllers finden

<?php 

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

Und eine einfache TracksController.php Datei in App befindet \ Http \ Controllers:

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

    } 

} 

Aber wann immer Ich versuche, auf diese Route zuzugreifen, die ich diesen Fehler erhalte:

Ich habe keine Idee, was ich noch tun kann. Ich habe:

  • Run Komponist auf den Speicher/* Ordner
  • Erzwingen der Namespace und/oder fullpath des TracksController
  • Run PHP Handwerker klar kompilierte
  • Auf Berechtigungen dumpautoload in die Routen
  • Datei

Aber nichts scheint zu funktionieren.

Ich habe sogar die Vendor/Composer/Autoload_Classmap.php Datei von Composer generiert und ich kann die TracksController-Datei dort nicht finden.

Irgendwelche Hinweise?

+0

überprüfen sie Ihre Funktion 'Funktion index() {}' 'sollte public' Funktion index() seine {}' –

+0

die Funktion öffentlich machen, und in der es alles entfernen und diese 'dd put (‘ teste '); 'und entferne' 'app \ Track als Track verwenden;' und wenn du das Wort test auf deiner Seite siehst, dann ist die Antwort offensichtlich –

+0

Es könnte eine sein Tippfehler in Ihrer Frage, aber der Befehl sollte "Composer Dump-Autoload", mit einem Bindestrich sein. Wenn es kein Tippfehler war, versuchen Sie es und sehen Sie, ob das das Problem löst. – patricus

Antwort

1

Also meine vorherige Antwort war falsch, als Patricus über den öffentlichen Modifikator gesetzt. Das Problem liegt mit Ihrem $tracks = Track::latest->get();

Wechsel zu und Sie sollten eingestellt werden.

+0

Wenn keine Sichtbarkeit definiert ist, setzt PHP die Sichtbarkeit auf öffentlich. Obwohl es besser aussieht, wenn Sie es angeben, ändert es nichts daran, wie der Code funktioniert. – patricus

+0

Ich war schon immer daran gewöhnt, öffentlich, geschützt, privat zu sein, dass ich es nicht zuerst selbst versucht habe. Danke für das Wissen, Patricus –

+0

Kein Problem. Ich gebe auch immer die Sichtbarkeit an. – patricus

0

Wenn Sie Linux verwenden, wird bei Dateinamen und Pfaden die Groß-/Kleinschreibung beachtet. Angenommen, Sie haben das automatische Laden in der Standarddatei composer.json nicht geändert, erwartet PHP, dass sich die Datei unter app\Http\Controllers\TracksController.php befindet. In Ihrer Frage haben Sie angegeben, dass es sich um App\... handelt.

davon aus, dies war kein Tippfehler in der Frage, müssen Sie entweder Ihr App Verzeichnis umbenennen zurück zu app, oder Sie benötigen eine composer.json Datei aktualisieren es automatisch zu laden aus dem App Verzeichnis wissen zu lassen, und nicht die app Verzeichnis:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "App/" 
    } 
}, 
Verwandte Themen