2014-12-05 15 views
7

Ich habe gelernt, Laravel zu verwenden, Larcasts zu beobachten und die Docs zu verwenden, bin auf eine Lektion gestoßen, in der Eloquent beschrieben wird, aber ich bleibe dabei der Fehler:Illuminate Routing Controller kann nicht als Controller verwendet werden, da der Name bereits verwendet wird

at HandleExceptions->fatalExceptionFromError(
    array(
    'type' => '64', 
    'message' => 'Cannot use Illuminate\Routing\Controller as Controller because the name is already in use' 
) 
) 

ich bin sehr verwirrt und haben nun die Beispiele bereitgestellt genau kopiert, aber ich immer noch den Fehler. Ich benutze Laravel 5, also weiß ich nicht, ob es irgendwelche undokumentierten Veränderungen gegeben hat oder ob ich einfach etwas falsch mache. Ich habe bei Google-Suchen nichts gefunden, das das Problem löst, also hoffte ich, dass jemand hier helfen könnte. Hier ist der Code, der den Fehler erzeugt:

<?php namespace App\Http\Controllers; 

use Illuminate\Routing\Controller; 

use App\VarName; 

class VarController extends Controller { 

    public function Var() 
    { 
     $Variable = VarName::get(); 

     dd($Variable); 
    } 
} 

Gemäß der Dokumentation, sollte diese Arbeit, und in dem Video, das ich sah, hat es funktioniert .. Was bin ich dabei?

habe ich versucht, die Controller-Klasse zu löschen, da es was zu sein scheint die bereits im Einsatz Fehler verursacht, die alles brachen, neu installiert und versuchen, zu verwenden Controller-einfach, da es das eloquent Modell erweitert, aber jetzt seinen Spruch:

Error in Pluralizer.php Linie 258: call_user_func() erwartet 1 Parameter eine gültige Callback-Funktion mb_strtolower nicht gefunden oder ungültig Funktionsnamen

, die über mein Verständnis der Funktionsweise von Laravel ist zu sein, ich bin fest und I don‘ Ich verstehe das Problem, nach der Dokumentation sehe ich nichts falsch mit meinem Code, das scheint so ein einfacher Schritt zu sein. Alles, was ich versuche, ist Informationen aus einer Datenbank abzurufen, was ist los?

Vielen Dank im Voraus für jede Hilfe!

+0

Haben auch Sie eine App definiert \ Http \ Controllers \ Controller-Klasse? – Wrikken

+0

Es gibt eine Standard-Controller-Klasse, ich habe es nicht erstellt, aber es ist dort. –

+0

hat das etwas mit dem Problem zu tun, dem ich begegne? –

Antwort

16

Die use Illuminate\Routing\Controller;-Anweisung schlägt fehl, da bereits eine Controller-Klasse im App\Http\Controllers-Namespace vorhanden ist.

das unmittelbare Problem zu lösen, können Sie Namespace-Verknüpfung auf der Anweisung Verwendung ändern:

use Illuminate\Routing\Controller as BaseController; 

Allerdings wollen die Lösung für Ihr spezifisches Problem ist, dass Sie wahrscheinlich nur zusammen die use Illuminate\Routing\Controller; Anweisung entfernen. In Laravel 5 erweitert die App\Http\Controllers\Controller Klasse bereits die Illuminate\Routing\Controller Klasse. Die Absicht ist, dass alle neuen Controller dann die Klasse erweitern sollten. Sehen Sie sich zum Beispiel die Standardwerte App\Http\Controllers\HomeController oder App\Http\Controllers\WelcomeController an, da beide die Klasse erweitern.

Zusammengefasst Ihre beiden Optionen sind:

// rename the class in the use statement 
namespace App\Http\Controllers; 
use Illuminate\Routing\Controller as BaseController; 

// note the name of the class being extended 
class VarController extends BaseController { 
    // snip 
} 

Oder

// extend the existing App\Http\Controllers\Controller class 
namespace App\Http\Controllers; 

class VarController extends Controller { 
    // snip 
} 
+0

Vielen Dank für Ihre Antwort, ich gab irgendwie Laravel 5 aus diesem Grund auf, entschied, zu warten, bis es eine stabile Version war und hatte spezifische Dokumentation über seine Unterschiede von 4. habe 4 ohne Problem verwendet und ich denke, ich werde warten Sie immer noch, bis 5 stabil ist, aber gut für zukünftige Referenz! –

+1

Es scheint ein Fehler im ': generate' in Laravel 5 zu sein – itsazzad

Verwandte Themen