2016-05-07 12 views
1

Ich rufe eine Methode von mehreren Controllern in meiner Anwendung. Ich möchte keinen doppelten Code in meinem Projekt haben, also suche ich nach einer Möglichkeit, die Methode irgendwo anzubringen, damit ich sie von jedem Controller aus aufrufen kann.Paket: Aufruf Methode von mehreren Controllern

Ich habe etwas recherchiert und bin auf "Helfer" gestoßen. (I dont‘wissen, ob dies der richtige Weg ist, diese zu lösen Andere Ansätze auch willkommen sind.) Ich this Post gelesen habe und tat genau das, was gesagt Jeffrey Way in seinem Beitrag, aber ich habe noch folgende Fehlermeldung:

Call to undefined function initFb()

Ich habe versucht composer dump-autoload.

Das ist also mein helpers.php:

<?php 

if (! function_exists('initFb')) 
{ 
    function initFb() 
    { 
     $fb = new \Facebook\Facebook([ 
      'app_id' => getenv('FACEBOOK_APP_ID'), 
      'app_secret' => getenv('FACEBOOK_APP_SECRET'), 
      'default_graph_version' => 'v2.5', 
     ]); 

     return $fb; 
    } 
} 

Mein composer.json meiner Paket:

"files": [ 
      "src/helpers.php" 
     ] 

Wichtige

Dies ist für ein Paket Ich entwickle.

Antwort

0

Um Ihre eigene helpers.php Datei, fügen Sie diese Zeilen in composer.json des Laravel zu registrieren:

"autoload": { 
     ... 
     "files": [ 
      "app/some_path/helpers.php" 
     ] 

Für die Klassen verwenden psr-4 Abschnitt:

"psr-4": { 
      "App\\": "app/", 
      "YourName\\PackageNamespace\\": "packages/yourname/package-name/src" 
     }, 

Dann composer dumpauto laufen (wenn nicht hilft, versuchen composer dumpauto -o).

Versuchen Sie auch, mit einigen einfachen Helfer zu testen, ob es funktioniert, tun Sie etwas wie folgt aus:

if (! function_exists('helpersTest')) 
{ 
    function helpersTest() 
    { 
     return 'It works!'; 
    } 
} 

Wenn Sie versuchen, diese Helfer zu verwenden, nachdem Ihr Paket mit composer (von Packagist) installieren, Sie sollte diese Zeilen der Datei composer.json des Pakets hinzufügen.

+0

Gleicher Fehler. Auch wenn ich den Helpertest() versuche. :/ – sseraluck

+0

Hast du diese Zeilen zu Laravels 'composer.json' hinzugefügt? –

+0

Oh, tut mir leid. Sie sagen, dass es in der Composer.json der Hauptanwendung sein sollte? – sseraluck

Verwandte Themen