2017-02-06 3 views
1

Я только начал с рамки Symfony сегодня днем. Я перешел на «CRUD» и следил за учебником, чтобы использовать инструменты, созданные для генерации CRUD. Однако, используя команды по умолчанию, я получаю ошибки.Классы, Пространство имен, команды бункера/консоли

Attempted to load class "Task" from namespace "AppBundle\Controller". 
Did you forget a "use" statement for another namespace? 
500 Internal Server Error - ClassNotFoundException 

This это видео, которое я следовал.

  1. Я начал с пустой установки Symfony.
  2. Подключена база данных.
  3. Ran php bin/console generate:doctrine:entity, написал AppBundle: Задачи и нажатые вводят по всем параметрам по умолчанию создают простую область имен и заметок.
  4. Ран php bin/console generate:doctrine:crud писал AppBundle: Задачи и прижал войти через все опционные по умолчанию, но выбрать да для генерации всех CRUD команд
  5. Ран php bin/console doctrine:schema:update --force
  6. Ран php bin/console cache:clear
  7. Перейти к //localhost/symfony/web/app_dev.php/tasks и я принес к списку , работает отлично.
  8. Но если я перейду к localhost/symfony/web/app_dev.php/tasks/new или нажмите сгенерированную кнопку, я получу ошибку, упомянутую выше.

Сообщение об ошибке является греческим для меня, несмотря на его лучшие попытки быть вежливыми. Я вижу, что есть файл Tasks.php в Entity, и он определяет класс «Задачи», а TasksController установлен в use AppBundle\Entity\Tasks, поэтому я понятия не имею, почему он не работает с моим ограниченным пониманием всего этого.

Я пытаюсь создать довольно простое приложение для управления задачами, но совершенно новое для Symfony и не имеет полного фона в PHP для начала. Может ли кто-нибудь объяснить, в каком процессе я, возможно, пошатнулся?

+3

Сообщение об ошибке ищет класс Task not Tasks. Поэтому проверьте контроллер на новую строку Task(). И да, когда у вас есть что-то работающее, переименуйте Задачи в Задачу и избавьте себя от некоторых проблем. – Cerad

+0

@Cerad Спасибо. Вот и все! У меня было множественное имя класса –

ответ

0

Вещи, чтобы проверить:

  • Имя файла Task.php является тем же, чем имя класса class Task. Примечание: класс не должен быть в plurial, так Task права и др Tasks неправильно
  • У вас есть use AppBundle\Entity\Task; между Controller именами и объявлением класса

Чтобы избежать этой ошибки, вы можете использовать PHP IDE, как Phpstorm (или другой), он отображает ваш оператор в цвете, когда вы забудете добавить оператор использования. Он также автоматически добавляет его: D

+0

Большое спасибо! Наконец-то появилась возможность заглянуть в это и возиться с ним, и в самом деле это была проблема. Для справок в будущем имеется «сигнальная задача», а не «задачи» - принудительное соглашение по PHP или принудительное соглашение о симфонии? Просто любопытно учиться. –

+0

@ chris98.5 Ни один не вынужден. Либо это сработает. Где-то вдоль линии вы были непоследовательны. – Cerad

Смежные вопросы