Как получить идентификатор от sfUser?

#php #symfony1 #doctrine #sfguard

#php #symfony1 #доктрина #sfguard

Вопрос:

Я работаю с symfony 1.4 и использую sfDoctrineGuardPlugin в качестве инструмента для аутентификации.

Я хочу получить идентификатор пользователя, чтобы сохранить его в моей таблице.

После небольшого исследования, я думаю, я должен использовать это выражение: getUser()->getGuardUser()->getId() .

Что я ищу, так это как вложить это выражение для моей цели.

Комментарии:

1. Не могли бы вы подробнее остановиться на «вложить это выражение в мою цель»? Что именно вы хотите сделать?

2. «Что я ищу, так это как вложить это выражение в мою цель». Да, пожалуйста, уточните….

Ответ №1:

если пользователь аутентифицирован, да, вы можете использовать:

 // inside an action
$id = $this->getUser()->getGuardUser()->getId();

// inside a template
$id = $sf_user->getGuardUser()->getId();
  

Если пользователь не аутентифицирован, это выдаст ошибку.

Комментарии:

1. это то, что я использую, та же инструкция, но то, что я ищу, — это как сохранить этот объект, который имеет $ id в качестве одного из свойств? это означает, что как я могу изменить свое действие, чтобы сделать это?

2. Можете ли вы объяснить, что вы подразумеваете под «одним из свойств»? С какими разными объектами вы имеете дело?

3. Я хочу скрыть это поле (id) из своей формы, и когда я нажимаю сохранить, оно должно быть сохранено автоматически. Итак, что я должен изменить в своем действии, чтобы сделать это, используя: $ id = $this-> getUser()-> getGuardUser()-> getId(); для объекта, который я пытаюсь сохранить

4. Честно говоря, я бы рекомендовал вам взглянуть на документацию для этого. В вашем вопросе больше одной части, а также несколько способов сделать это. Я рекомендую вам ознакомиться с руководством по Jobeet.

5. Руководство по Jobeet настолько огромно, у вас есть специальная ссылка для этого (когда именно)

Ответ №2:

Зависит от того, откуда вы вызываете.

Из «представления»:

 echo $sf_user->getAttribute('user_id', null, 'sfGuardSecurityUser' );
echo $sf_user->getUsername();
  

От ‘controller’ (как упоминалось Томом выше):

 echo $this->getUser()->getGuardUser()->getId();
echo $this->getUser()->getGuardUser()->getUsername();
  

(Первая строка — ‘id’, вторая — ‘username’)