【问题标题】:laravel load view from a folder name with actual dotlaravel 从带有实际点的文件夹名称加载视图
【发布时间】:2016-02-16 17:19:41
【问题描述】:

我正在创建一个多域 Laravel 应用程序,因此我的视图文件位于每个域的单独文件夹中。例如:

return view('pages/' . $_SERVER['SERVER_NAME'] . '/public/home', []);

应该在下加载一个视图

pages/domain.com/public/home.blade.php

但它会尝试加载

pages/domain/co/public/home.blade.php

因为点符号。

我该如何解决这个问题?

【问题讨论】:

    标签: php laravel routing


    【解决方案1】:

    它应该可以工作

    return view('pages/domain.com/public/home',[]);
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    【解决方案2】:

    也许你可以用下划线代替点:

    $domain = str_replace('.', '_', $_SERVER['SERVER_NAME']);
    return view('pages/' . $domain . '/public/home');
    

    并在下面加载视图:

    pages/domain_com/public/home.blade.php
    

    【讨论】:

      【解决方案3】:

      如果名称中有圆点,您需要添加一个视图命名空间来为特定文件夹设置提示。

      $domain = 'domain.com';
      
      View::addNamespace($domain, config('view.paths')[0]."/{$domain}/");
      
      Route::get('example', function() use ($domain) {
          return view("{$domain}::home");
      });
      

      您可以使用base_path('resources/views') 而不是上面示例中的config('view.paths')[0],如果有人重新排序或更改config('view.paths') 的值,这可能更明智

      【讨论】:

        猜你喜欢
        • 2017-01-25
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 1970-01-01
        • 2016-01-23
        • 1970-01-01
        相关资源
        最近更新 更多