laravel syntax' ::'在视图功能意义上

时间:2018-05-03 03:17:55

标签: laravel laravel-5 laravel-views

<?php
namespace Laravel\Horizon\Http\Controllers;

class HomeController extends Controller
{
      /**
      * Single page application catch-all route.
      * @return \Illuminate\Http\Response
      */
      public function index()
      {
         return view('horizon::app'); // what's the meaning of this 'horizon::app'
      }
}

我在Laravel-Horizo​​n Controller中找到了这种语法,任何人都可以解释一下:

  

视图(&#39;地平线::应用&#39);

'horizon::app'是什么意思?

3 个答案:

答案 0 :(得分:3)

与所说的其他答案一样,这被称为view namespaces。它不仅限于包的视图,也可以在项目中使用它。

例如,您可能拥有管理员和客户模块,并希望通过自己的文件夹名称区分他们的视图,此时您可以使用命名空间声明。例如,您可能有这些文件夹结构:

|- resources
   |- views
      |- admin
         |- index.blade.php 
      |- customer
         |- index.blade.php  

然后,您可以注册自己的命名空间,指向AppServiceProvider.php中的特定文件夹路径:

app('view')->addNamespace('admin', base_path() . '/resources/views/admin');

// or

app('view')->addNamespace('customer', base_path() . '/resources/views/customer');

稍后,在控制器的方法中,您可以使用以下方法引用它:

return view("admin::index"); 

// or

return view("customer::index");

答案 1 :(得分:2)

::是范围(命名空间)运算符。含义apphorizon内声明。

示例(来自php.net):

<?php
class MyClass {
    const CONST_VALUE = 'Un valor constante';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE; // A partir de PHP 5.3.0

echo MyClass::CONST_VALUE;
?>

答案 2 :(得分:2)

此语法表示名为app的视图属于horizon包。可以将其视为package::view.path

More info in Laravel's Package Development documentation.

  

要使用Laravel注册您的包的视图,您需要告诉Laravel视图所在的位置。

     

使用package :: view语法约定引用包视图。因此,一旦您的视图路径在服务提供商中注册,您就可以从快递包加载管理视图,如下所示:

Route::get('admin', function () {
    return view('courier::admin');
});

如果您已经看过该术语或想要搜索其他内容,则此功能以前称为视图命名空间。 :)