Laravel: целевой класс не существует. Но это делает - PullRequest
0 голосов
/ 30 марта 2020

Я искал ответы, но в основном проблема заключалась в опечатке в классе или контроллере.

В моем случае все написано правильно. Класс в app \ Http \ Controllers \ GenerateTextController. php:

<?php 
      namespace App\Http\Controllers;

      class generateText extends Controller
      {
           public function generate()
           {
              dd('success');
           }
      }

затем я пытаюсь вставить его в лезвие. home.blade. php:

  @inject ('generate', 'App\Http\Controllers\GenerateTextController')
  @dd($generate)

Результат:

Target class [App\Http\Controllers\GenerateTextController] does not exist. 

У меня уже есть composer автозагрузка пару раз, кэш ремесленника очищен, ничего помогает. Я даже не могу найти ближайшего решения в сети.

Интересная вещь: когда я пытаюсь dd на другом классе, это было, как бы сказать, «предопределено» Laravel - это показывает класс. И мой второй пользовательский класс можно просмотреть в браузере с такой инъекцией.

Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 30 марта 2020

Ваше имя файла класса app\Http\Controllers\GenerateTextController.php, но имя класса generateText, в этом проблема. Имя класса и имя файла должны совпадать. Вот как работает PSR-4 автозагрузчик.

Из спецификации:

Имя завершающего класса соответствует имени файла, оканчивающемуся на. php. Имя файла ДОЛЖНО совпадать с регистром имени завершающего класса.

Поэтому имя класса должно выглядеть следующим образом:

class GenerateTextController extends Controller
{
    // ...
}

Подробнее о PSR-4 автозагрузчик, чтобы понять это.

2 голосов
/ 30 марта 2020

Имя файла классов должно совпадать с именем класса PHP.

class GenerateTextController extends Controller
...