$EntityName = 'App\\Entity\\' . ucwords($slug);
$item = new $EntityName();
$item= $this->getDoctrine()->getRepository($EntityName)->find($id);
$form = $this->createFormBuilder($item)
$item
的内容:
object(App\Entity\Members)#4788 (6) {
["id":"App\Entity\Members":private]=>
int(9)
["username":"App\Entity\Members":private]=>
string(13) "123"
["plainPassword":"App\Entity\Members":private]=>
NULL
["password":"App\Entity\Members":private]=>
string(0) ""
["email":"App\Entity\Members":private]=>
string(7) "[email protected]"
["isActive":"App\Entity\Members":private]=>
bool(true)
}
我试图从$ item获取字段。
作为我想要的输出
id
username
password
email
isActive
创建字段。
我的方法是:
foreach($item as $field){
echo $field;
}
但我没有得到任何输出
你不能循环遍历这样的对象的属性。如果要在循环中执行此操作,则必须提供属性数组。
foreach(['id', 'username', 'email'] as $field){
echo $item->{$field}
}
如果你只想打印一个属性,你会这样做:$item->username
您可以使用get_object_vars获取对象属性列表,并从每个属性中使用magic方法__get()获取每个属性的值。见this answer。编辑:你实际上甚至不需要魔术方法...... get_object_vars
已经返回值。
从以上链接修改的示例:
class Foo {
private $a;
private $d;
public function getAllFields() {
return get_object_vars($this);
}
}
然后,您可以使用以下方法获取所有(非静态)属性,包括私有属性:
$item = new Foo();
$fields = $item->getAllFields();
你可以得到每个字段的值,如下所示:
foreach ($fields as $fieldName => $fieldValue) {
echo $fieldName . ' has value ' . $fieldValue;
}
这是未经测试的代码,但应该有效。