Я использую переключатель редактирования таблицы, который я хочу интегрировать в 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: я знаю, что отправлять такие значения не очень безопасно, но это только для личного использования.
Если вы хотите вызвать сеттер из значения вашего запроса, будет работать следующий код:
$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
Других решений пока нет …