Приложение Symfony 4, и в настоящее время я использую пакет FOSUser для своей пользовательской системы.
Я хотел бы добавить полную функцию вашего профиля после того, как пользователь впервые зарегистрирует свою учетную запись. Возможно, он продолжает появляться до тех пор, пока не будет выполнено условие или не истечет время.
Для начала, что я должен добавить в свой класс User, чтобы пометить, что пользователя нужно перенаправить в / profile / complete?
т.е. Требуется ли одно дополнительное поле ... completeProfile с методами setCompleteProfile и hasCompleteProfile?
Как я могу установить условие или ограничение по времени, когда пользователю не нужно отмечать полный профиль?
т.е. это сделано в контроллере? какой сервис Symfony можно использовать?
вы можете написать одну функцию в своем контроллере, где вы проверяете и перенаправляете пользователя или нет, и вызываете эту проверку в каждом действии
просто добавьте логическое поле для проверки
Хорошо, так что добавить completedProfile в мою сущность User?
почему бы и нет, но не ожидайте, что что-нибудь произойдет волшебным образом. Встроенной функции нет, поэтому его настраиваемая логика и, следовательно, его собственный код - вы можете назвать и запрограммировать его, как хотите, но, пожалуйста, не спрашивайте у SO код для вас
все хорошо :) Но для того, чтобы задать вопрос по SO, нужны как минимум what did you try и where did it fail, а в вашем нет ни того, ни другого.
ОК, все хорошо. В следующий раз я постараюсь несколько иначе структурировать свои вопросы.




У вас есть свойство $ registredAt и $ hasCompleteProfile в вашем Entity App \ Entity \ User или что-то еще? Вы можете сделать это в своем контроллере ...
public function yourController(User $user) {
if (!$user->getHasCompleteProfile()) { // Getters of $hasCompleteProfile inside App\Entity\User
$completeProfileLimt = 4; // In months or days, 4 is just and example
$now = new \Datetime();
$userRegistredDate = $user->getRegistredAt();
$elapsedTime = $now - $userRegistredDate; // You can not do it like this but it's an example
if ($elapsedTime > $completeProfileLimt) {
// Your action
}
// Your Response Return
}
// Your Response Return
}
Думаю, мне это понадобится только в ProfileController