2012-12-06 7 views
10

Ich habe diesen Artikel verfolgt: http://philsturgeon.co.uk/blog/2012/05/composer-with-codeigniterWie werden Composer-Pakete im Code-Signierer verwendet?

Aber ich bekomme Fatal error: Class 'Buzz\Browser' not found.

Was fehlt in seinem Beitrag?

Mein Controller oder Anwendung ist nicht Namespaced. Ich hatte gehofft, dass ich nur dieses eine Paket in einer Aktion eines Controllers in einem nicht namespaced Framework verwenden könnte.

+0

Verwenden Sie den Autoloader oder nicht? –

+0

Ja, in der index.php. – Tjorriemorrie

Antwort

32

Kredit

Dies ist möglich @jmadsen nur um die Reihenfolge der immer korrekt geladen:

/* 
* -------------------------------------------------------------------- 
* 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

Was ist 'FCPATH' – iGbanam

+2

Der FrontController-Pfad. Grundsätzlich die index.php Datei; Das ist im Stammverzeichnis, wenn ich mich nicht irre. – Tjorriemorrie

3

hinzufügen Sie können direkt mit dem Composer Autoloder in Ihrem Controller:

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

Ich habe es in die index.php aufgenommen; Das Problem ist, dass die Klasse mit FQN nicht gefunden wird. Weißt du wie das geht? – Tjorriemorrie

+0

Das hat bei mir auch in index.php nicht funktioniert. Deshalb lege ich es direkt in den Controller. Sie können versuchen, CI_Controller zu erweitern und den Composer Autoloader im Konstruktor hinzuzufügen? – Kinobi

5

EDIT: Verdammt, ich sagte gerade ziemlich genau dasselbe wie @Tjorriemorrie

Wenn Sie richtig, alle anderen Richtungen befolgt haben, alles, was Sie tun müssen, ist den folgenden Code in der Nähe der sehr Ende index.php:

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

... nur sicherstellen, dass Sie es vor wird die CodeIgniter Bootstrap Datei mit dem Namen in Slot:

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

Für CodeIgniter 3.x und Komponist, ist es suggested setzen nur $config['composer_autoload'] zu TRUE oder ein benutzerdefinierter Pfad in application/config/config.php.

Es scheint, dass CI davon ausgeht, dass sich das Verzeichnis vendor im Verzeichnis application befindet. Das war nicht mein Fall. Ich habe die folgenden:

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

2

Well in Codeigniter3.x können Sie ganz einfach tun, dass in der Anwendung, indem Sie/config/config.php und suchen für diese Linie

$config['composer_autoload'] = FALSE; 

Stellen Sie sicher, setzen Sie ihn auf TRUE und rechts, nachdem es Sie require_once dies:

require_once APPPATH.'vendor/autoload.php'; 

So etwas wie diese erhalten Sie:

/* 
|-------------------------------------------------------------------------- 
| 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'; 

Stellen Sie sicher, dass Sie Ihren Lieferantenordner im Anwendungsordner haben und Sie sind gut zu gehen.

Ich habe kürzlich herausgefunden, dass Sie einfach $ config ['composer_autoload'] = TRUE setzen können; und legen Sie Ihren Lieferantenordner in den Anwendungsordner und das war's.

0

Ich benutze Kenjis codeigniter composer package, und es setzt das Herstellerverzeichnis von der Wurzel.Da es keine vordefinierte Konstante für den Stamm gibt, habe ich Folgendes verwendet:

$root = getcwd(); 
$config['composer_autoload'] = "$root/vendor/autoload.php"; 
Verwandte Themen