2017-10-08 5 views
0

J'ai créé un module dans Drupal 8 qui doit charge un fichier csv à partir du dossier du module, mais je ne pouvais le faire, je l'ai déjà essayé:Drupal 8 incapable d'obtenir l'emplacement de chemin à partir du module personnalisé

$directory = drupal_get_path('module', 'my_module'); 
$file = 'source.csv'; 
$path = $directory . '/' . $file; 
kint($path); 

// open the CVS file 
$handle = fopen($path, 'r'); 
if (!$handle) { 
    // ... 
} 

Mais je reçois false lors du chargement du fichier, donc il semble que ce n'est pas la bonne façon.

+0

Quelle est la valeur de retour de 'drupal_get_path ('module', 'my_module');'? Êtes-vous sûr que le fichier se trouve dans 'my_modules/source.csv'? Et enfin, où exécutez-vous ce code: dans un Block Plugin, Controller, Service, my_module.module? Avec toutes ces informations je peux vous aider, merci. –

Répondre

0

J'ai trouvé un moyen de obtenu en utilisant le code suivant:

$file = 'source.csv'; 
$path = __DIR__ . '/' . $file; 
// open the CVS file 
$handle = @fopen($path, 'r'); 
if (!$handle) { 
    // ... 
} 

S'il y a une meilleure façon me le faire savoir.

0

essentiellement:

$moduleDir = drupal_get_path('module','my_module'); 

est la bonne façon

donc si votre fichier source.csv est situé sous modules/mon_module/fichiers/sources.csv

alors vous devriez être capable de faire quelque chose comme ce qui suit dans votre fichier my_module.module ou ailleurs:

$file = $moduleDir . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'sources.csv; 
if(file_exists($file)){ 
    //do your stuff 
}