我尝试在laravel 5.4中创建一个新的自定义类来检查用户类型。
我将这个新类添加到新文件夹app \ ItSolution中,代码:
<?php
namespace App\ItSolution;
class DemoClass {
public function getPermission() {
switch(Auth::user()->user_type_id) {
case 1:
return 'admin';
break;
case 2:
return 'promoter';
break;
case 3:
return 'customer';
break;
default:
return false;
}
}
}
我想在我的所有应用中使用这个类,所以我尝试创建一个新的ServiceProvider,代码:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App;
class AuthLibServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
App::bind('democlass', function()
{
return new \App\ItSolution\DemoClass;
});
}
}
我在同一个文件夹app \ ItSolution,代码:
为我的班级创建一个新的外观<?php
namespace App\ItSolution;
use Illuminate\Support\Facades\Facade;
class DemoClassFacade extends Facade {
protected static function getFacadeAccessor() { return 'democlass'; }
}
之后我在app / config.php中添加这一行
'aliases' => [
...
'DemoClass'=> App\ItSolution\DemoClassFacade::class,
]
'providers' => [
...
App\Providers\AuthLibServiceProvider::class,
]
但是当我尝试在我的控制器中使用DemoClass别名时,我有这个错误 DemoClass :: getPermission():
未找到类'App \ Http \ Controllers \ DemoClass'
我怎么能解决这个问题,Thnaks。
答案 0 :(得分:1)
您已将此课程注册为外观,因此您需要将此课程添加到课程开头:
use DemoClass;
或者,您可以在使用外观时使用完整命名空间:
\DemoClass::
答案 1 :(得分:1)
在laravel 5.4中,您不需要服务提供商来注册外观,您可以使用自动Facada,您只需要定义DemoClass。
即在控制器中:
use Facades\ {
App\ItSolution\DemoClass
};
并调用函数
DemoClass::getPermission()
来源here