【发布时间】:2018-11-26 08:20:45
【问题描述】:
这就是我创建数组fields的方式:
public function index($slug, Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
$page = $this->getDoctrine()->getRepository(Pages::class)->findOneBy(['slug'=>$slug]);
$fields = (array) $page;
return $this->render('mypage.html.twig', ['page' => $page, 'fields' => $fields]);
}
输出是:
array:3 [▼
"\x00App\Entity\Pages\x00id" => 3
"\x00App\Entity\Pages\x00name" => "cat"
"\x00App\Entity\Pages\x00color" => ""
]
但我实际上需要这个结果:
array:3 [▼
"id" => 3
"name" => "cat"
"color" => ""
]
根据建议我做了这个改变:
public function index($slug, Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
$page = $this->getDoctrine()->getManager()->getRepository(Pages::class)->findOneBy(['slug'=>$slug]);
$fields = get_object_vars($page);
return $this->render('mypage.html.twig', ['page' => $page, 'fields' => $fields]);
}
但这会输出一个空数组。
【问题讨论】:
-
将对象和序列化对象都传递给 Twig 模板感觉有点不必要。为防止出现X/Y Problem,请解释为什么需要这个。
-
@StephanVierkant 这是因为这是我最终可以解决这个问题的一种方式:stackoverflow.com/questions/53476565/…
-
@StephanVierkant 我无法遍历对象属性。但是通过数组我可以。
标签: arrays symfony object oop doctrine-orm