getter / setter Класс из $ variable без ключа / если в Symfony?

Я использую переключатель редактирования таблицы, который я хочу интегрировать в Symfony.
Это сценарий, о котором я говорю: ССЫЛКА НА САЙТ

Теперь этот скрипт отправляет запросы, которые я могу получить в Symfony.

отправитель

<a href="#" id="Username" data-type="text" data-pk="1" data-url="/post/table1" data-title="Enter username">superuser</a>

Получатель (/сообщение)

if($table == "table1"){
$repo = "AppBundle:Table1";
}
...
/* Get correct repo/entry */
$repo = $em->getRepository($repo)->find($request->get('pk'));

Это как-то непроверено, но должно работать.

Теперь я хочу обновить соответствующий столбец, который отправляется id="Username"

То, что я хотел бы достичь сейчас, это что-то вроде:
$repo->set.$request->get('id')('blabla')

Я мог бы использовать переключатель, но тогда он должен быть достаточно большим.

Любой другой подход к этому?

PS: я знаю, что отправлять такие значения не очень безопасно, но это только для личного использования.

1

Решение

Если вы хотите вызвать сеттер из значения вашего запроса, будет работать следующий код:

$setter = 'set'.$request->request->get('id'); // is now equal to 'setUsername'
$repo->$setter('blabla'); // Assuming $repo is the entity retrieved by find();

Кроме того, есть чистый способ сделать это — symfony, который называется PropertyAccess, вам просто нужно имя свойства, которое вы хотите установить / получить.

Пример :

use Symfony\Component\PropertyAccess\PropertyAccessor;
// ...
$accessor = PropertyAccess::createPropertyAccessor();

// If the property 'username' is writable, set it
if ($accessor->isWritable($repo, 'username') {
$accessor->setValue($repo, $request->request->get('id'), 'blabla');
}

Увидеть Symfony PropertyAccess

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]