簡體   English   中英

getter / setter類來自$ variable w / out開關/如果在Symfony中?

[英]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');
}

參見Symfony PropertyAccess

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM