#php #symfony #symfony5 #deprecation-warning
Вопрос:
У меня есть индексная страница, на которой отображаются все пользователи. Я получаю пользователей из базы данных через $userRepository->findAll()
и переношу данные в файл twig:
public function index(UserRepository $userRepository): Response
{
return $this->render('user/index.html.twig', [
'users' => $userRepository->findAll(),
]);
}
В файле twig я перебираю пользователей и отображаю их всех.
Теперь PhpStorm показывает мне, когда использование {{user.username}}
этого Method 'user:getUsername'
устаревает. Я проверил внутри пользователя, и да, есть function getUsername
и то, и другое geUserIdentifier
.
Я также проверил документацию Symfony. Однако, поскольку я не использую эту getUsername
функцию напрямую, но findAll()
я не знаю , как подойти к проблеме.
Что и где я должен что-то изменить, чтобы новое getUserIdentifier
использовалось внутри findAll()
?
Комментарии:
1. Я не думаю, что финдЕлл имеет к этому какое-то отношение. Просто обновите шаблон веточки, чтобы использовать {{ user.useridentifier }}
2. @Cerad Спасибо! Я об этом не подумал. Это работает. Что меня смущает, так это то, что если я дамп массива пользователей, там будет имя пользователя, вот почему я использовал user.username. В любом случае, я думал, что могу удалить имя пользователя, но я не могу удалить его из имени пользователя, так как я получаю следующую ошибку: я оставлю его как есть, но я действительно хотел бы знать, как избавиться от устаревшей функции.
Fatal error: Class AppEntityUser contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (SymfonyComponentSecurityCoreUserUserInterface::getUsername)
3. Это переходная вещь. Начиная с версии 6.0, функция GetUserName() будет полностью удалена из интерфейса пользователя, и проблема исчезнет. До тех пор вам нужно имя GetUserName для обратной совместимости, даже если вы никогда его не вызывали. Уведомления об устаревании раздражают, но на самом деле вы можете просто игнорировать их.