简体   繁体   中英

Can't access Laravel helper class from a view

I have my Helper file located at 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;
    }
}

Then in my composer.json , I autoloaded this Helper file like this:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/Helper.php"
    ]
},

Then in one of my master views, I have this:

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

But I get an error saying:

Class 'Helper' not found

I also did dump autoload so that shouldn't be the issue. Anyone have any clues?

Thanks!

1. You need add namespace for your Helper class.

<?php

namespace App\Helpers;

class Helper {
    ...
}

2. If you wanna use your class in view, then you need to add alias for your class.

config/app.php

'aliases' => [
    ...

    'Helper' => 'App\Helpers\Helper'
]

Done!

Ps: You don't need to add your class into composer.json autoload. It's unneeded.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM