$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) "1@12.sw"
["isActive":"App\Entity\Members":private]=>
bool(true)
}
我尝试从$ item中获取字段。
作为我想要的输出
id
username
password
email
isActive
创建字段。
我的方法是:
foreach($item as $field){
echo $field;
}
但是我没有得到任何输出
答案 0 :(得分:1)
您不能像这样遍历对象的属性。如果要循环执行此操作,则必须提供属性数组。
foreach(['id', 'username', 'email'] as $field){
echo $item->{$field}
}
如果您只想打印一个属性,则可以这样做:
$item->username
答案 1 :(得分:0)
您可以使用get_object_vars获取对象属性的列表,然后使用魔术方法__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;
}
这是未经测试的代码,但应该可以使用。