【发布时间】:2016-12-09 21:13:40
【问题描述】:
我正在 symfony 中制作我的第一个小应用程序,一个简单的博客。
现在我一直在使用 symfony 和教义的文档,并希望执行一个简单的初学者任务:显示一个 json 编码的简单表格
但不知怎的,我似乎无法与教义相处。
这是我的数据(除了显示值什么都不做的视图):
//AppBundle/Controller/DefaultController.php
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Entity\Post;
use Doctrine\Common\Persistence;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$database = new Post();
$output = $database->findAll();
return $this->render('default/index.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'x' => json_encode($output)
]);
}
}
<?php
//AppBundle/Entity/Post.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\EntityRepository;
/**
* @ORM\Entity
* @ORM\Table(name="sqltest")
*/
class Post extends EntityRepository
{
//The post for now uses data from a temponary test table
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=100)
*/
private $name;
/**
* @ORM\Column(type="integer", scale=2)
*/
private $number;
/**
* Get id
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
* @param string $name
* @return Post
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set number
* @param integer $number
* @return Post
*/
public function setNumber($number)
{
$this->number = $number;
return $this;
}
/**
* Get number
* @return integer
*/
public function getNumber()
{
return $this->number;
}
}
问题是当我尝试显示网站时出现此异常
警告:缺少参数 1 Doctrine\ORM\EntityRepository::__construct(),调用 C:\Users\Alan\Desktop\symf-blog\src\AppBundle\Controller\DefaultController.php 在第 19 行并定义
有问题的线路是$database = new Post(); 的线路
我对此很陌生,并且知道响应非常简单,我只是看不到它。回答时请提供even a dead rabbit能理解的解释。
非常感谢您的耐心等待。
PS:另外解释一下我见过的$em 变量的用途以及我从哪里得到它会很好
【问题讨论】:
-
我了解 $class 元素,但仍然找不到有关变量 $em 来源的任何信息
-
这可以给你一个提示
$em = $this->getDoctrine()->getManager(); $entities = $em->getRepository("CommonBundle:Bank")->findAll(); -
重置一下并阅读入门章节:symfony.com/doc/current/doctrine.html Doctrine 是 ORM 而不是 Active Record 模块,因此让实体扩展存储库是零意义的。无需担心。如果你真的想要一个 Active Record 方法,有几个可供选择。
-
@ReynierPM
$this在这种情况下指的是什么?
标签: php doctrine-orm symfony