вспомогательные функции не загружают laravel 5 - вызов неопределенной функции

У меня возникла проблема с загрузкой моего файла помощников в Laravel 5 и вызовом функций из представлений. Ниже приведен краткий обзор того, как я пытался настроить помощников в моем проекте L5.

  1. Создал файл helpers.php в app / Http;
  2. Файл помощников содержит базовую функцию для создания заголовка страницы.

    public function full_title($title)
    {
         $base_title = 'Social Tracking Application';
    
         if (isset($title) && $title != ''){
            $comp_title = $title . " | " .  $base_title;    
         } else {
           $comp_title = $base_title;
         }
    
    return $comp_title;
    }
    
  3. Обновлен composer.json для автоматической загрузки нового файла помощников.

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

    },

  4. Запустите composer dump-autoload из терминала.

После этих шагов у меня сложилось впечатление, что я могу использовать своего помощника из представлений и контроллеров. Поэтому я разместил вызов моей новой вспомогательной функции в основном представлении макета, используя следующее:

<title> full_title($title)  </title>

Однако, когда я перехожу на любую страницу, я получаю вызов FatalErrorMessage для неопределенной функции full_title. (обратите внимание, что сообщение обычно находится в строке заголовка, поэтому я перемещаю его в тег тела, чтобы просмотреть сообщение об ошибке).

Я не могу понять, что я здесь делаю неправильно, я видел другие примеры людей, использующих пользовательские вспомогательные файлы аналогичным образом, но мой просто не работает, я упускаю что-то очевидное?

Я управляю этим из Усадьбы.

полная база кода: https://github.com/n1k41l/SocialTrak/tree/middleware-currentUser


person n1k41l    schedule 17.04.2015    source источник
comment
Либо существует слишком много возможных ответов, либо хорошие ответы будут слишком длинными для этого формата. Добавьте подробности, чтобы сузить набор ответов или выделить проблему, на которую можно ответить в нескольких абзацах.   -  person mate64    schedule 18.04.2015


Ответы (4)


Мне удалось решить проблему самостоятельно, проблема заключалась в том, что я создал свой файл Helpers как класс php. Файл помощников должен быть только файлом php - с функциями, а не классом с функциями ... (очевидная ошибка, как только я ее нашел: S).

person n1k41l    schedule 19.04.2015

Моя проблема заключалась в том, что я использовал namespace в своем helper.php файле. В основном у него нет класса, нет пространства имен, просто какая-то простая функция, которую вы хотите разместить там

person Saddan    schedule 04.12.2020

Вам может потребоваться использовать имя класса перед функцией при ее вызове в вашем представлении или контроллере, например:

Helper::my_function()
person Ben Wilson    schedule 04.05.2017

Я обнаружил, что у меня тоже была эта проблема в какой-то момент, когда я поместил своих помощников в app / Helpers / functions.php вместо app / Http / helpers.php. Перемещение их в последний заставило все заработать нормально.

person Xedecimal    schedule 02.01.2019