Я хочу сделать проверку в контроллере, с какого устройства пользователь зашёл на страницу, и с её помощью выяснять какую вьюху выдавать пользователю. Простым языком - хочу сделать мобильную версию личного кабинета.
Нашёл для этого прекрасный PHP-класс Mobile Detect, но, к удивлению, не нашёл инфы о том как подключить его к laravel.
Решил сделать очень грубо и возможно неправильно:
Я тупо закинул файл по адресу /vendor/user_bib/Mobile_Detect.php.
После в файле /vendor/composer/autoload_classmap.php подключил нужный мне класс:
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'User\\Mobile_Detect' => $vendorDir . '/user_bib/Mobile_Detect.php', //Вот мой класс
'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php',
'App\\Exceptions\\Handler' => $baseDir . '/app/Exceptions/Handler.php',
'App\\Http\\Controllers\\AdminController' => $baseDir . '/app/Http/Controllers/AdminController.php',
'App\\Http\\Controllers\\AjaxController' => $baseDir . '/app/Http/Controllers/AjaxController.php',
//Ниже ещё огромный список, который я решил не вставлять
)
Тут я сделал все нормально.
После, в файле /config/app.php, сделал следующее:
'aliases' => [
'Mobile_Detect' => User\Mobile_Detect::class, //Вот мой класс
'App' => Illuminate\Support\Facades\App::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
// Опять же, ниже список продолжается, вставлять его не стал
]
Здесь я тоже, вроде, сделал все хорошо.
И уже в контроллере попытался его подключить и использовать:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use Mobile_Detect;
use Illuminate\Support\Facades\Auth;
class HomeController extends Controller
{
public function index()
{
if(Auth::user()->moderated == 0){
header('Location: https://domain.ru/home/edit');
}else{
$detect = new Mobile_Detect; //Эта строка должна быть по инструкции, но она вызывает ошибку: Class 'User\Mobile_Detect' not found
if ( $detect->isMobile() ) {
return view('lk.home_mobail');
}else{
return view('lk.home');
}
}
}
}
Ошибка понятна, только я не понимаю где именно я ошибся, или я что то пропустил.
Как показывает, debag, ошибка в файле: /vendor/laravel/framework/src/Illuminate/Foundation/AliasLoader.php.
Я только хотел сам проверить что там не так, но чет подумал, что я иду по самому тупому пути и, возможно, все это я мог сделать через терминал или чего то подобного, и решил спросить, стоит ли продолжать это варварство или все же есть какие то русскоязычные документации по этой теме.
Сам файл стачивал с офф сайта:
http://mobiledetect.net.
Спасибо за внимание