处理自定义配置选项Laravel 5.1


Dealing with custom config options Laravel 5.1

如果我有一个自定义配置文件,自定义选项在哪里是放置这些选项的最佳位置?我应该创建中间件和那些选项吗?

基本上我所拥有的是一个自定义配置文件,它有一个选项来关闭或打开应用程序的某个部分。如果它被设置为True,这些页面的路由和控制器将被访问。如果为False,则不访问它们。

我有所有的部分,我能够在我的代码部分使用Config::get("customer.mode")。然而,我只是不确定这种情况下的最佳实践

最好放在项目根目录下的config文件夹中。只需返回一个包含配置的关联数组,并且只需使用Config facade即可访问它。例如

config/urls.php
在urls.php

return [
    'service_url' => 'http://server.com'
]

然后在你的应用程序中,要访问这个值

Config::get('urls.service_urls');

config('urls.service_urls');

这里的关键是配置字符串的第一部分是您放入配置数组的代码文件名,然后在链中。

总之,是的,这是最佳实践

似乎这个规则有点像权限或业务规则,在我看来,控制器不是最好的地方。

也试着找到一个解决方案,不要重复这个Config::get("customer.mode")代码,所以你可能需要创建一个类来负责获取customer .mode…

收集路由或将其与Route:group分组,并为该规则创建中间件

这是做你想做的事情的最好方法。

  1. 在Middleware文件夹中创建一个自定义中间件。
  2. 注入文件或类

客户中间件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.php中,如下所示

protected $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.

现在,您可以将新的中间件应用于单个路由或一组路由。这将使您的代码保持整洁和有条理。