Я использую Laravel Homestead
в качестве среды разработки, я разработал приложение laravel, и все отлично работает, и я могу правильно просматривать приложение, но при развертывании его на VPS с тем же программным обеспечением (php, mysql -server, redis ,,,) как Laravel Homestead
, но я получаю FatalThrowableError : Class 'App\Http\Controllers\Admin\DatasourceCrudController' not found
Я потратил много часов на изучение этой проблемы, но не повезло.
Я обнаружил, что имя класса DataSourceCrudController.php
с заглавной буквы S в DataSource bu ошибка: DatasourceCrudController
.
Я пытался:
composer dump-autoload
php artisan cache:clear
php artisan config:clear
php artisan route:clear
, но для каждого класса я получаю исключение, не найденное.
Код локально и на рабочем сервере, и среды одинаковы UBUNTU 18.04
Пожалуйста, помогите мне решить эту проблему.
Спасибо,
ОБНОВЛЕНИЕ 1:
web.php
маршруты:
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', "PageController@index")->name("index");
Auth::routes();
Route::middleware('auth:web')->get('/home', 'HomeController@index')->name('home');
Route::get('/import', 'ImportController@import')->name('import');
Route::post('/parse', 'ImportController@parse')->name('parse');
Route::post('/process', 'ImportController@process')->name('process');
Route::post('/active-country/{activeCountry}', 'PageController@selectActiveCountry')->name("selectActiveCountry");
Route::prefix('graphs')->middleware('auth:web')->group(function(){
Route::get('/price-analysis', 'DyGraphController@create')->name("getPriceAnalysisForm");
Route::post('/price-analysis', 'DyGraphController@store')->name("postPriceAnalysisForm");
Route::get('/dygraph', 'DyGraphController@getGraphs')->name("dygraph");
Route::get('/trends-analysis', 'TrendsAnalysisController@commoditiesTrendsPage')->name('trendAnalysisPage');
});
Route::prefix('analysis')->middleware('auth:web')->group(function (){
Route::get('/your-analysis', 'CustomAnalysisController@create')->name('yourAnalysisPage');
});
Файл класса: DataSourceCrudController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Admin\Operations\UploadOperation;
use App\Http\Requests\DatasourceRequest;
use Backpack\CRUD\app\Http\Controllers\CrudController;
use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD;
/**
* Class DatasourceCrudController
* @package App\Http\Controllers\Admin
* @property-read CrudPanel $crud
*/
class DataSourceCrudController extends CrudController
{
use \Backpack\CRUD\app\Http\Controllers\Operations\ListOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation;
use UploadOperation;
public function setup()
{
$this->crud->setModel('App\DataSource');
$this->crud->setRoute(config('backpack.base.route_prefix').'/datasource');
$this->crud->setEntityNameStrings('data source', 'data sources');
$this->crud->enableExportButtons();
}
protected function setupListOperation()
{
$this->crud->addColumn([
'name' => 'row_number', 'type' => 'row_number', 'label' => '#', 'orderable' => false
])->makeFirstColumn();
$this->crud->addColumn([
'name' => 'file_name',
'type' => 'text',
'label' => 'File Name'
]);
$this->crud->addColumn([
'label' => 'Country',
'type' => 'text',
'name' => 'country_name'
]);
$this->crud->addColumn([
'name' => "rows",
'label' => "Rows",
'type' => "number"
]);
$this->crud->addColumn([
'name' => 'imported',
'key' => 'check',
'label' => 'Imported',
'type' => 'check',
]);
$this->crud->addColumn([
'name' => 'created_at',
'label' => 'Date',
'type' => 'datetime'
]);
}
protected function setupUploadOperation()
{
$this->crud->setValidation(DatasourceRequest::class);
/*
* Get Active Countries Ajax /api/active-countries
* */
/*$this->crud->addField([
'label' => 'Active Country',
'type' => 'select2_from_ajax',
'name' => 'active_country_id',
'entity' => 'activeCountry',
'attribute' => 'name',
'model' => 'App\Country',
'data_source' => url('api/active-countries'),
'placeholder' => 'Select a Country',
'minimum_input_length' => 3,
]);*/
$this->crud->addField(
[ // Select2
'label' => 'Country',
'type' => 'select2',
'name' => 'active_country_id', // to display active countries
'entity' => 'activeCountry',
'attribute' => 'name',
'model' => 'App\ActiveCountry',
'options' => (function ($query) {
return $query->orderBy('id', 'DESC')->get();
}),
]
);
$this->crud->addField(
[
'label' => "Data Source File",
'name' => "import_file",
'type' => 'upload',
'upload' => true,
]);
$this->crud->addField(
[
'name' => 'header',
'label' => 'Excel file contains header',
'type' => 'checkbox',
]);
}
}
Обновление 2:
Я с помощью панели администратора рюкзака, и этот контроллер используется для создания операции crud и маршрутов администратора в custom.php
:
<?php
// --------------------------
// Custom Backpack Routes
// --------------------------
// This route file is loaded automatically by Backpack\Base.
// Routes you generate using Backpack\Generators will be placed here.
Route::group([
'prefix' => config('backpack.base.route_prefix', 'admin'),
'middleware' => ['web', config('backpack.base.middleware_key', 'admin')],
'namespace' => 'App\Http\Controllers\Admin',
], function () { // custom admin routes
Route::crud('country', 'CountryCrudController');
Route::crud('currency', 'CurrencyCrudController');
Route::crud('commodity', 'CommodityCrudController');
Route::crud('market', 'MarketCrudController');
Route::crud('period', 'PeriodCrudController');
Route::crud('measure_unit', 'MeasureUnitCrudController');
Route::crud('datasource', 'DataSourceCrudController');
Route::crud('commodity_rate', 'CommodityRateCrudController');
Route::crud('activecountry', 'ActiveCountryCrudController');
Route::crud('availability', 'AvailabilityCrudController');
Route::crud('pricetype', 'PricetypeCrudController');
}); // this should be the absolute last line of this file