2015-04-29 2 views
5

При запуске примера кода на Laravel документы php artisan make:request StoreBlogPostRequest, чтобы создать новый контроллер для проверки, я получаю следующую ошибкуОшибка работает марка: запрос на Laravel 5

[RuntimeException]      
Unable to detect application namespace. 

Я не уверен, что это неправильно, я» вы сделали некоторые поиски, но ничего не объясняет эту ошибку. Есть идеи?

ответ

9

В Laravel 5, «Заявление» представляет собой набор PHP файлов в едином пространстве имен, сохраняются в папке app/

По умолчанию, и в большинстве из Laravel 5 образец кода из документации, это пространство имен есть App\. Например, один контроллер в вашем приложении может выглядеть так.

namespace App\Http\Controller; 
class MyController 
{ 
    //... 
} 

Когда Laravel генерирует код (то есть, когда вы используете команду make:request), он должен знать, что это пространство имен приложение (это можно изменить пространство имен с помощью команды artisan app:name). По какой-то причине в вашей системе Laravel 5 не может определить пространство имен.

Если посмотреть на участке Laravel 5 основного кода, который определяет в пространстве имен

#File: vendor/laravel/framework/src/Illuminate/Console/AppNamespaceDetectorTrait.php 
protected function getAppNamespace() 
{ 
    $composer = json_decode(file_get_contents(base_path().'/composer.json'), true); 

    foreach ((array) data_get($composer, 'autoload.psr-4') as $namespace => $path) 
    { 
     foreach ((array) $path as $pathChoice) 
     { 
      if (realpath(app_path()) == realpath(base_path().'/'.$pathChoice)) return $namespace; 
     } 
    } 

    throw new RuntimeException("Unable to detect application namespace."); 
} 

Вы увидите, что Laravel определяет пространство имен, глядя на ваш файл composer.json и ищет thefirst действительного psr-4 пространства имен.

Моя догадка файл composer.json отсутствует в пространстве имен

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    } 
}, 

Добавим, что обратно, и вы будете хорошо идти.

Смежные вопросы