处理自定义配置选项Laravel 5.1

时间:2015-08-29 19:02:07

标签: php laravel laravel-5.1

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

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

我已准备好所有部分,并且我可以在代码的各个部分中使用Config::get("customer.mode")。但是,我只是不确定这种情况的最佳做法

3 个答案:

答案 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)

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

  1. 在Middleware文件夹中创建自定义中间件。
  2. 注入您的文件或您的班级
  3. 客户中间件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 ..

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