2014-09-05 8 views
7

Robię projekt przy użyciu Laravel 4.2, gdzie muszę dołączyć plik PHP (bibliotekę, aby przekształcić plik PDF w tekst) do kontrolera, a następnie zwrócić zmienna z tekstem, jakikolwiek pomysł?Laravel 4.2: Dołącz plik PHP (biblioteka) do kontrolera

To mój kontroler:

public function transform() { 
    include ('includes/vendor/autoload.php'); 
} 

A moja /app/start/global.php file:

ClassLoader::addDirectories(array(
    app_path().'/commands', 
    app_path().'/controllers', 
    app_path().'/models', 
    app_path().'/database/seeds', 
    app_path().'/includes', 

)); 

I to jest błąd :

include(includes/vendor/autoload.php): failed to open stream: No such file or directory 

Odpowiedz

4

Myślę, że masz rację, ale znajduję inną drogę, może nie właściwą drogę, ale działa.

jest tak, że utworzony nowy folder o nazwie zawiera i umieścić moje pliki tam, a następnie w /app/start/global.php I dodaje ten wiersz:

require app_path().'/includes/vendor/autoload.php'; 

A teraz pracuje: D

16

Można utworzyć nowy katalog gdzieś w katalogu aplikacji, na przykład, app/libraries

Następnie w pliku composer.json można dołączyć app/libraries w autoload classmap:

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "require": { 
     "laravel/framework": "4.2.*", 
    }, 
    "autoload": { 
     "classmap": [ 
      "app/commands", 
      "app/controllers", 
      "app/models", 
      "app/libraries", <------------------ YOUR CUSTOM DIRECTORY 
      "app/database/migrations", 
      "app/database/seeds", 
      "app/tests/TestCase.php" 
     ] 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist" 
    }, 
    "minimum-stability": "stable", 
} 

Pamiętaj, aby uruchomić composer dump-autoload po zmodyfikowaniu pliku composer.json.

Załóżmy, że twoja nazwa klasy nazywa się CustomClass.php i znajduje się w katalogu app/libraries (więc pełna ścieżka to app/libraries/CustomClass.php). Jeśli poprawnie podasz nazwy swojej klasy, zgodnie z konwencją, twoja przestrzeń nazw zostanie prawdopodobnie nazwana libraries. Tylko ze względu na przejrzystość nazwiemy naszą przestrzeń nazw custom, aby uniknąć nieporozumień z katalogiem.

$class = new \custom\CustomClass(); 

Alternatywnie, można nadać mu alias w pliku app/config/app.php:

/* 
|-------------------------------------------------------------------------- 
| Class Aliases 
|-------------------------------------------------------------------------- 
| 
| This array of class aliases will be registered when this application 
| is started. However, feel free to register as many as you wish as 
| the aliases are "lazy" loaded so they don't hinder performance. 
| 
*/ 

'aliases' => array(
    ... 
    'CustomClass' => 'custom\CustomClass', 
    ... 
) 

I można utworzyć wystąpienia klasy z dowolnego miejsca w aplikacji jak w przypadku każdej innej klasy:

$class = new CustomClass(); 

Mam nadzieję, że to pomoże!

+0

Dodałem '" app/libraries "' do mojej sekcji composer.json autoload-> classmap. Następnie dodałem do bibliotek 'TextCleaner => 'library \ TextCleaner' moje aliasy app/config/app.php. Próbowałem utworzyć instancję mojej klasy, jak '$ imageCleaner = new \ libraries \ TextCleaner()' ORAZ jak '$ imageCleaner = new TextCleaner();' i oba błędy dla mnie mówią, że klasa nie istnieje. Tak Uruchomiłem pomyślnie funkcję dump-autload programu composer. –

+0

@BillGarrison Upewnij się, że masz nazwy na swojej klasie. Załóżmy, że twoja przestrzeń nazw dla twojej klasy nazywa się "helpers" ("pomocnicy przestrzeni nazw" na górze twojej klasy). W twoim pliku config/app.php umieścisz go jako ''TextCleaner' => 'helpers \ TextCleaner''. Zmieniłem oryginalną odpowiedź, aby pomóc wyjaśnić. – eluong

+0

pomógł mi dzisiaj :) +1 –

Powiązane problemy