无法从视图访问 Laravel 助手类

zen*_*zen 1 php laravel laravel-5

我的 Helper 文件位于 app/Helpers/Helper.php

class Helper {

    // Add body class
    public static function bodyClass() {
        $body_classes = array();
        $class = "";

        foreach ( \Request::segments() as $segment ) {
            if ( is_numeric( $segment ) || empty( $segment ) ) {
            continue;
            }

            $class .= ! empty( $class ) ? "-" . $segment : $segment;
            array_push( $body_classes, $class );
        }
        return ! empty( $body_classes ) ? implode( ' ', $body_classes ) : NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 . 中composer.json,我像这样自动加载了这个 Helper 文件:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/Helper.php"
    ]
},
Run Code Online (Sandbox Code Playgroud)

然后在我的一个主视图中,我有这个:

<body class="{{ Helper::bodyClass() }}">

但我收到一条错误消息:

Class 'Helper' not found

我也转储了自动加载,所以这不应该是问题。有人有任何线索吗?

谢谢!

小智 5

1.你需要为你的Helper类添加命名空间。

<?php

namespace App\Helpers;

class Helper {
    ...
}
Run Code Online (Sandbox Code Playgroud)

2.如果你想在视图中使用你的类,那么你需要为你的类添加别名。

config/app.php

'aliases' => [
    ...

    'Helper' => 'App\Helpers\Helper'
]
Run Code Online (Sandbox Code Playgroud)

完毕!

Ps:您不需要将您的类添加到composer.json自动加载中。这是不需要的。