2012-12-06 13 views
10

Podążyłem za tym artykułem: http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniterJak korzystać z pakietów kompozytora w codeigniter?

Ale dostaję Fatal error: Class 'Buzz\Browser' not found.

Czego brakuje w jego poście?

Mój kontroler lub aplikacja nie ma nazw. Miałem nadzieję, że po prostu będę mógł użyć tej jednej paczki w działaniu jednego kontrolera w ramach bez nazw.

+0

Czy używasz autoloadera, czy nie? –

+0

Tak, w pliku index.php. – Tjorriemorrie

Odpowiedz

32

zgłosił @jmadsen

Jest to możliwe tylko przez coraz kolejność załadunku poprawne:

/* 
* -------------------------------------------------------------------- 
* LOAD THE BOOTSTRAP FILE 
* -------------------------------------------------------------------- 
* 
* And away we go... 
* 
*/ 
// Composer Autoloader 
require FCPATH . 'vendor/autoload.php'; 

require_once BASEPATH.'core/CodeIgniter.php'; 

/* End of file index.php */ 
+0

co to jest 'FCPATH' – iGbanam

+2

Ścieżka FrontController. Zasadniczo plik index.php; który znajduje się w katalogu głównym, jeśli się nie mylę. – Tjorriemorrie

3

można dodać bezpośrednio do Composer Autoloder w kontrolerze:

// Composer Autoloader 
require FCPATH.'vendor/autoload.php'; 
+0

Zawarłem to w index.php; problemem jest to, że klasa nie została znaleziona przy użyciu FQN. Czy wiesz, jak to zrobić? – Tjorriemorrie

+0

To nie działa dla mnie ani w index.php. Dlatego umieściłem go bezpośrednio w kontrolerze. Możesz spróbować rozszerzyć CI_Controller i dodać Autoloader Composer do konstruktora? – Kinobi

5

EDIT: Cholera, właśnie powiedziałem dokładnie to samo co @Torriemorrie

Jeśli wykonałeś wszystkie inne kierunki prawidłowo, wszystko co musisz zrobić, to dodać następujący kod pobliżu samym na koniec pliku index.php:

/* 
* -------------------------------------------------------------------- 
* COMPOSER AUTOLOAD 
* -------------------------------------------------------------------- 
*/ 
include_once './vendor/autoload.php'; 

... po prostu upewnić, Państwo rozciąć go w przed plik CodeIgniter Bootstrap nazywa się:

/* 
* -------------------------------------------------------------------- 
* LOAD THE BOOTSTRAP FILE 
* -------------------------------------------------------------------- 
* 
* And away we go... 
* 
*/ 
require_once BASEPATH.'core/CodeIgniter.php'; 
11

dla CodeIgniter 3.x i kompozytora, to suggested po prostu ustawić $config['composer_autoload'] do TRUE lub niestandardową ścieżkę w application/config/config.php.

Wygląda na to, że CI zakłada, że ​​katalog vendor znajduje się w katalogu application. To nie była moja sprawa. Zrobiłem, co następuje:

$config['composer_autoload'] = 'vendor/autoload.php';

2

Dobrze w Codeigniter3.x można łatwo zrobić wchodząc do aplikacji/config/config.php i szukać tej linii

$config['composer_autoload'] = FALSE; 

Upewnij się, ustawić go na true, a zaraz po nim pan require_once to:

require_once APPPATH.'vendor/autoload.php'; 

Więc masz coś takiego:

/* 
|-------------------------------------------------------------------------- 
| Composer auto-loading 
|-------------------------------------------------------------------------- 
| 
| Enabling this setting will tell CodeIgniter to look for a Composer 
| package auto-loader script in application/vendor/autoload.php. 
| 
| $config['composer_autoload'] = TRUE; 
| 
| Or if you have your vendor/ directory located somewhere else, you 
| can opt to set a specific path as well: 
| 
| $config['composer_autoload'] = '/path/to/vendor/autoload.php'; 
| 
| Note: This will NOT disable or override the CodeIgniter-specific 
| autoloading (application/config/autoload.php) 
*/ 
$config['composer_autoload'] = TRUE; 
require_once APPPATH.'vendor/autoload.php'; 

Wystarczy upewnić się, że sprzedawca folder w folderze aplikacji i jesteś dobry, aby przejść.

Niedawno okazało się, że można po prostu ustawić $ config [ 'composer_autoload'] = true; i umieść folder dostawcy w folderze aplikacji i to wszystko.

0

Używam Kenjis codeigniter composer package, a to stawia katalogu dostawców off z korzenia.Ponieważ nie ma ustalonej stałej (o której wiem) dla korzenia, użyłem:

$root = getcwd(); 
$config['composer_autoload'] = "$root/vendor/autoload.php"; 
Powiązane problemy