Я пытаюсь передать случайное число в свою форму и использовать его как значение HiddenType. Я использую 'attr' => [ 'value' => '$options['editId'], чтобы поместить значение в текстовое поле, но когда форма отправляется, значение не вставляется в таблицу.
Listing.php
/**
* @ORM\Column(type = "integer", nullable=false, name = "edit_id")
*/
protected $editId;
/**
* @return mixed
*/
public function getEditId()
{
return $this->editId;
}
/**
* @param mixed $editId
*/
public function setEditId($editId)
{
$this->editId = $editId;
}
Итак, я установил имя переменной в $ editId, и, насколько мне известно, имя переменной - это то, что доктрина использует для сопоставления ее с соответствующим полем (используя имя поля)
ListingType.php
->add('editId', HiddenType::class, [
'required' => true,
'disabled' => true,
'mapped' => true,
'attr' => [
'value' => $options['editId']
]
])
Я проверил значение текстового поля editId, значение есть, но оно просто не вставляется.
editId
<input type = "hidden" id = "listing_editId" name = "listing[editId]" disabled = "disabled" required = "required" value = "952726647">
Как выглядит окончательный HTML? Это было бы более полезно для определения причины, по которой он не был отправлен.
@SalvatoreQZeroastro, если бы я это сделал, не смог бы пользователь изменить значение до его отправки?
Установите disabled => false, потому что в противном случае значение не будет в отправленной форме.
разве это не скрытое поле? Однако вход должен быть readonly и не отключен, чтобы его можно было отправить, пока он не доступен для редактирования.
Это скрытый ввод, а не текстовое поле. Но это неважно. Они так же могут изменить его независимо от того, отключите вы его или нет. Для обеспечения безопасности не полагайтесь ни на что, исходящее от пользователя.
Вы не можете запретить пользователям изменять отправленные вам значения. Даже если вы отключите ввод в браузере, злоумышленник может просто отредактировать HTML или сделать запрос POST, не посещая предварительно форму. Убедитесь, что значение имеет смысл после того, как вы получите его обратно.
wouldn't the user be able to change the value before it's submitted?: да, точно так же, как они могут изменить скрытый на не скрытый и отключенный на не отключенный и т. д. У вас есть сценарий, который принимает эту форму, они могут отправлять сообщения из любой точки мира, следовательно, необходимо проверить пользователя ввод из форм (и где угодно)






Перейдите на
disabled => false, потому что отключенные входы не отправляются