В моем приложении Laravel я разбиваю код переднего и заднего конца на папку. Это app/Http/Controllers/BackEnd
и app/Http/Controllers/FrontEnd
. Вместо того, чтобы вводить все данные в каждом файле, я думал, что будет проще определить два пространства имен: BackEnd
и FrontEnd
. Я отредактировал мой файл композитор этого:Laravel 5 не может найти класс для пользовательского пространства имен
"autoload": {
"classmap": [
"app/Models",
"database"
],
"psr-4": {
"App\\": "app/",
"BackEnd\\": "app/Http/Controllers/BackEnd",
"FrontEnd\\": "app/Http/Controllers/FrontEnd"
}
},
Я побежал композитор автосамосвалы и настроить свой файл маршрут, как это:
Route::group(['prefix' => 'webman', 'middleware' => 'auth', 'namespace' => 'BackEnd'], function()
{
Route::get('/', ['as' => 'webmanHome', 'uses' => '[email protected]']);
});
Но когда я просматриваю к localhost:8000/webman/
я просто получаю сообщение об ошибке, Class App\Http\Controllers\BackEnd\HomeController does not exist
. Контроллер действительно существует, это файл:
<?php namespace BackEnd;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class HomeController extends Controller {
/**
* Display the admin home page, showing the front-end menu and "apps" as links to other sections of the ACP.
*
* @param Reqeust $request
*
* @return View
*/
public function index(Request $request)
{
return view('backend.index');
}
}
Я проверил vendor/composer/autoload_psr4.php
, чтобы убедиться, что пространство имен определяется и оно, это в возвращаемом массиве 'BackEnd\\' => array($baseDir . '/app/Http/Controllers/BackEnd'),
.
Странно, если я использую <?php namespace App\Http\Controllers\BackEnd;
наверху HomeController.php
, тогда все работает, почему? Что мне не хватает? Почему автозагрузка не может найти файл только с BackEnd
?
Возможно, ваш шаблон лезвия пытается получить доступ к контроллеру в неправильном месте. (если вы используете ссылку «действие»), поэтому укажите контроллер в лезвии, как BackEnd \ HomeController @ lala – animaacija