Php Laravel多域设置

Php Laravel多域设置,php,laravel,Php,Laravel,我想在我的laravel 5.1中设置多个域 我有3个不同的领域 www.domain1.com www.domain2.com www.domain3.com 每个域都有一些共同的功能和一些不同的功能,但主题不同 我希望我的视图结构是这样的 resource/www.domain1.com resource/www.domain2.com resource/www.domain3.com 我无法分开意见我如何才能做到这一点 **您应该创建中间件来修改查看文件夹的路径: namespace A

我想在我的laravel 5.1中设置多个域

我有3个不同的领域

www.domain1.com
www.domain2.com
www.domain3.com

每个域都有一些共同的功能和一些不同的功能,但主题不同

我希望我的视图结构是这样的

resource/www.domain1.com
resource/www.domain2.com
resource/www.domain3.com
我无法分开意见我如何才能做到这一点


**

您应该创建中间件来修改查看文件夹的路径:

namespace App\Http\Middleware;

use Closure;
use Illuminate\View\FileViewFinder;
use Illuminate\Support\Facades\View;

class ModifyViewFolder 
{

  public function handle($request, Closure $next)
  {
      $finder = new FileViewFinder(app()['files'], [
        app_path('../resources/views/' . $request->server->get('HTTP_HOST')),
        app_path('../resources/views/'),

      ]);
      View::setFinder($finder);

      return $next($request);
  }

}

然后在
Kernel.php
中注册它。如果特定于域的文件夹中不存在视图,这将退回到默认文件夹。

我知道这篇文章已经很老了,但与Laravel的所有内容一样,做任何事情都有不止一种方法。我可以通过重写ViewServiceProvider来实现这一效果。但是,此解决方案将应用于整个网站,因为接受的答案将允许您将模板应用于web组

阶级


请澄清您想要实现的目标我想在一个laravel 5.1代码中处理多个网站。每个网站的视图都会不同。是否有方法从共享视图中获取一些视图,从特定于域的文件夹中获取其他视图?也许通过创建一个自定义的
文件取景器
?@Rudie,您可以将数组传递给
文件取景器
,这样您就可以传递任意多的值。请参阅更新的答案。如何处理单独的数据库?t@bogdan请指导我如何为每个应用程序分离数据库
 TemplateServiceProvider extends ViewServiceProvider
{
    /**
     * Register the view finder implementation.
     *
     * @return void
     */
    public function registerViewFinder()
    {
        $this->app->bind('view.finder', function ($app) {
            $paths = [];

            /*
             *  Pull our template from our site name
             */
            $template = Template::where('domain', Request::server('SERVER_NAME'))->first();
            if($template)
            {
                $paths = [
                    $app['config']['view.paths.templates'] . DIRECTORY_SEPARATOR . $template->tag
                ];
            }


            /*
             *  Default view path is ALWAYS last
             */
            $paths[] = $app['config']['view.paths.default'];

            return new FileViewFinder($app['files'], $paths);
        });
    }
}