Как я могу заменить переменную в моей функции Symfony 4? - PullRequest
0 голосов
/ 24 августа 2018

Я создал функцию в моем контроллере, которая работает с сущностью Members.То, что я хочу сделать сейчас, - это сделать функцию гибкой, чтобы я мог использовать ее и для всех других моих сущностей.Следовательно, название объекта должно зависеть от слизняка.Так что в этом случае slug = members:

/**
  * @Route("/pages/{slug}/forms", name="forms", methods={"POST", "GET"})
  */

  public function form($slug, Request $request){
     $item = new Members();    
     $item= $this->getDoctrine()->getRepository(Members::class)->find($id);
 }

Итак, я пытаюсь заменить имя сущности на слаг:

/**
  * @Route("/pages/{slug}/forms", name="forms", methods={"POST", "GET"})
  */

  public function form($slug, Request $request){
     $item = new $slug();    
     $item= $this->getDoctrine()->getRepository($slug::class)->find($id);
 }

Но я получаю сообщение об ошибке:

Попытка загрузки "членов" класса из глобального пространства имен.Вы забыли оператор use?

Это как-то связано с прописными / строчными буквами слага?

1 Ответ

0 голосов
/ 24 августа 2018

Все наши сущности, вероятно, находятся в чем-то вроде src\Entity, и в зависимости от того, как вы настроите каждую сущность, будет какое-то пространство имен или другое, например App\Entity.

Кроме того, члены в вашем слаге находятся встрочными буквами, но ваш класс начинается с прописной буквы.

Все, что вам нужно сделать, это убедиться, что members становится Members, и где вы говорите

$item = new $slug()

Вы, вероятно, хотите:

$fullClassName = 'App\\Entity\\' . ucwords($slug);
$item = new $fullClassName()`

Попробуйте и дайте мне знать, как вы поживаете!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...