setValue поля формы в шаблоне веточки - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь установить информацию о пользователе, который вошел в систему, на шаблоне веточки, но не могу найти способ. В частности, я пытаюсь создать раздел комментариев, и я хотел бы, чтобы пользователь писал только текст комментария. Для этого я хотел бы установить Author (app.user.username) в ветке шаблона, потому что я не могу получить информацию о пользователе в Файл контроллера.

поэтому в моем файле контроллера в показе функций я помещаю это:

 if($form->isSubmitted() && $form->isValid()  ){
        $comment->setCreatedAt(new \DateTime())
                ->setExercice($exercice)
                //would like to do it but cannot
                //->setAuthor(app.user.username);

Итак, я ищу способ сделать что-то вроде

{{form_row(commentForm.author,{'attr': { 'value': app.user.username, 'class':hidden }})}}

Есть способ сделать это?

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

Variable "hidden" does not exist.

1 Ответ

1 голос
/ 11 мая 2020

Ваша исходная ошибка, Variable "hidden" does not exist., возникает из-за того, что вы попытались сослаться на hidden, как если бы это была переменная или константа, а не буквальная строка. Чтобы использовать его как буквальную строку, вам нужно заключить его в кавычки:

{{ form_row(commentForm.author, {attr: {
    value: app.user.username,
    class: 'hidden'
}}) }}

Вам не нужно заключать в кавычки ключи массива (например, value: и class:), потому что нескалярные значения не могут быть используются в качестве ключей.

Однако, как указал @msg, вы не должны полагаться на форму в представлении для получения сведений о пользователе. Это открывает форму для манипуляций, то есть любой может выдавать себя за других людей в любом опубликованном комментарии. Обязательно заполните это поле объекта comment непосредственно во время контроллера. - Если вы сделаете это до проверки того, отправлена ​​ли форма, эта информация будет доступна и для представления, например, отображение $comment в представлении будет означать, что {{ comment.username }} также будет работать.

...