如果我有自定义选项的自定义配置文件,那么放置这些选项的最佳位置是什么?我应该创建中间件和那些选项吗?
基本上我所拥有的是一个自定义配置文件,可以选择关闭或打开应用程序的某个部分。如果它设置为True路由,则将访问这些页面的控制器。如果为False,则不访问它们。
我已准备好所有部分,并且我可以在代码的各个部分中使用Config::get("customer.mode")
。但是,我只是不确定这种情况的最佳做法
答案 0 :(得分:1)
放置它的最佳位置是项目根目录中的config文件夹。只需返回一个包含其配置的关联数组,并且只需使用Config外观即可访问它。例如
config/urls.php
在urls.php里面
return [
'service_url' => 'http://server.com'
]
然后在您的应用程序中,访问此值
Config::get('urls.service_urls');
或
config('urls.service_urls');
关键是配置字符串的第一部分是您将配置数组放入的代码文件名,然后是链中的。
简而言之,是的,这是最佳做法。
答案 1 :(得分:0)
似乎这个规则类似于许可或商业规则,在我看来,Controller并不是最好的地方。
还尝试找到一个不重复此Config::get("customer.mode")
代码的解决方案,因此您可能需要创建一个负责获取cusomer.mode的类......
收集路线或将其与Route:group
分组,并为此规则创建中间件。
答案 2 :(得分:0)
这是做你想做的最好的方法。
客户中间件AuthAccess.php
<?php namespace App\Http\Middleware;
use myconfig; // your file or class.
use Closure;
class AuthAccess{
public function __construct() {
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
// your logic here to auth access to the route
if ( true ){
$response = $next($request);
return $response;
}
else {
return redirect() -> to('/'); // or show error page.
}
}
}
像这样
将新的中间件添加到Kernel.phpprotected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'auth.access' => 'App\Http\Middleware\AuthAccess',
];
不要忘记dump-autoload ..
现在,您可以将新中间件应用于单个路由或一组路由。这将使您的代码保持整洁有序。 希望这有帮助。