我有一个关于Symfony应用程序的问题,我想把控制器的“用户名”或“id”作为输入,并接收我的表“user”中的信息以及另外两个表例如:A用户有一个或多个级别,并且它必须获得积分才能解锁一个级别,我希望我的dan主页显示用户名及其所具有的级别和范围,我是初学者而不是来了解书籍symfony我使用的是PARALLEL“symfony_book”和“symfony_cook_book”以及教程youtube我可以阻止,这里是我的cotroler的代码 “
/**
* @Route("/{id}")
* @Template()
* @param $id=0
* @return array
*/
public function getUserAction($id)
{
$username = $this->getDoctrine()
->getRepository('voltaireGeneralBundle:FosUser')
->find($id);
if (!$username) {
throw $this->createNotFoundException('No user found for id '.$id);
}
//return ['id' => $id,'username' => $username];
return array('username' => $username);
}
我必须使用类之间的关系
use Doctrine\Common\Collections\ArrayCollection;
class Experience {
/**
* @ORM\OneToMany(targetEntity="FosUser", mappedBy="experience")
*/
protected $fosUsers;
public function __construct()
{
$this->fosUsers = new ArrayCollection();
}
}
和
class FosUser {
/**
* @ORM\ManyToOne(targetEntity="Experience", inversedBy="fosUsers")
* @ORM\JoinColumn(name="experience_id", referencedColumnName="id")
*/
protected $fosUsers;
}
我一直都有错误
答案 0 :(得分:0)
在Symfony中你不能在Action函数中返回一个数组!,Action函数必须总是返回一个Response对象...所以如果你想在Symfony中将数据返回给浏览器,Action函数必须返回一个包含在Response对象中的字符串。 在您的控制器代码中,要将数组返回到浏览器,您可以将数组序列化为JSON并将其发送回浏览器:
public function getUserAction($id)
{
$username = $this->getDoctrine()
->getRepository('voltaireGeneralBundle:FosUser')
->find($id);
if (!$username) {
throw $this->createNotFoundException('No user found for id '.$id);
}
return new Response(json_encode(array('username' => $username)));
}
我建议您阅读有关HTTP协议,PHP和Symfony的更多信息。