#laravel #laravel-5
#laravel #laravel-5
Вопрос:
Я пытаюсь добавить пакет в laravel 5.2.*
, но package routes возвращает ошибку Class FormController does not exist
.
Что я пытаюсь
Package Directory > packagesjsformsrc
Пакет > Поставщик
namespace JsForm;
use IlluminateSupportServiceProvider;
class FormServiceProvider extends ServiceProvider
{
public function boot()
{
}
public function register()
{
include __DIR__.'/routes.php';
$this->app->make('JsFormFormController');
}
}
Пакет> Контроллер
namespace JsForm;
use AppHttpControllersController;
use CarbonCarbon;
class FormController extends Controller
{
public function index()
{
echo 'test';
}
}
Пакет > Композитор
{
"name": "js/form",
"description": "this is form",
"type": "project",
"license": "xyz",
"minimum-stability": "dev",
"require": {}
}
Главный композитор
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\": "app/",
"Js\Form\": "packages/Js/Form/src"
}
}
Пакет > Маршруты
Route::get('/contactus', 'FormController@index');
В config/app.php
JsFormFormServiceProvider::class,
Я также выполнил эту команду, composer dump-autoload
затем попытался открыть этот URL http://localhost/project/public/index.php/contactus
, но он показывает следующую ошибку.
Class FormController does not exist
Кто-нибудь может подсказать мне, в чем проблема, которую я могу исправить. Я хотел бы быть признателен, если кто-нибудь поможет мне. Спасибо
Комментарии:
1. Я предполагаю, что ошибка возникает из функции маршрутизатора. Вы просто указываете FormController, чтобы он выглядел в местоположении по умолчанию для этого (app / http / controllers), но это не то место, где находится контроллер формы
2. @tam Я согласился с вами, проблема возникает из route, потому что я проверяю это, добавляя неправильное имя контроллера. Итак, как я могу исправить. У вас есть какие-либо идеи?
3. Можете ли вы попробовать эту команду php artisan config:clear в CLI. Иногда случается, что конфигурация берется из кэша.
4. @RonakDattani Я сделал, как вы указали, но при обновлении все еще отображается та же ошибка.
Ответ №1:
Ошибка возникает из этой строки:
Route::get('/contactus', 'FormController@index');
Маршрутизатор по умолчанию ищет контроллеры относительно AppHttpControllers
, но это не то, где находится ваш FormController
.
Чтобы исправить это, вам нужно будет указать, где FormController
был относительно AppHttpControllers
, или указав абсолютный путь.
Например, если ваше FormController
пространство имен было равно AppFormController
, вы могли бы написать:
Route::get('/contactus', 'AppFormController@index');
Итак, в вашем случае это было бы:
Route::get('/contactus', 'JsFormFormController@index');
Комментарии:
1. Вау, удивительно, я следил за ответом и его работой. Большое вам спасибо 1