Я довольно новичок в Symfony, и у меня есть 2 поля, относящиеся к моей таблице "Pages"; созданный и обновленный. Они связаны с таблицей пользователей (sfGuardUser) в качестве внешних ключей. Я хочу, чтобы они были скрыты от редактирования / новых форм, поэтому я настроил файл generator.yml, чтобы не отображать эти поля:
form:
display:
General: [name, template_id]
Meta: [meta_title, meta_description, meta_keywords]
Теперь мне нужно установить поля для сохранения. Я искал, как это сделать весь день, и перепробовал сотни методов. Метод, который я получил, работает в классе действий:
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form_params = $request->getParameter($form->getName());
$form_params['updated_by'] = $this->getUser()->getGuardUser()->getId();
if ($form->getObject()->isNew()) $form_params['created_by'] = $this->getUser()->getGuardUser()->getId();
$form->bind($form_params, $request->getFiles($form->getName()));
Так что это работает. Но у меня возникает ощущение, что в идеале мне следует не изменять веб-запрос, а напрямую изменять форму / объект. Однако я не имел никакого успеха с такими вещами, как:
$form->getObject()->setUpdatedBy($this->getUser()->getGuardUser());
Если бы кто-нибудь мог предложить какой-либо совет о лучших способах решения этой проблемы, я был бы очень благодарен.
Спасибо,
Том