[英]getter/setter Class from $variable w/out switch/if in Symfony?
我正在使用一個表編輯開關,我想將其集成到Symfony。 這是我正在談論的腳本: LINK
現在,此腳本發送我能夠以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();
另外,有一種干凈的方法可以通過名為PropertyAccess的symfony進行操作,您只需要設置/獲取屬性的名稱即可。
范例:
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');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.