我正在尝试创建一个小应用程序,使用symfony / doctrine从id读取表中的记录 . 我的步骤:
-
创建控制器(GS \ OrderBunndle \ Controller \ CustomerCuntroller.php),路由 . 测试网址 - 它正在运行;
-
使用列和getter / setter为customer表创建实体(GS \ OrderBundle \ Entity \ Customer.php);
3)创建了GS \ OrderBundle \ Entity \ CustomerRepository.php(我不知道为什么我还需要它,它是自动生成的) . 源代码:
namespace GS\OrderBundle\Entity;
use Doctrine\ORM\EntityRepository;
class CustomerRepository extends EntityRepository
{
}
4)修改了CustomerController.php:
<?php
namespace GS\OrderBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
use GS\OrderBundle\Entity\Customer;
use Doctrine\ORM\EntityManager;
class CustomerController
{
public function indexAction($id)
{
$customer = $this->getDoctrine()->getRepository('GSOrderBundle:Customer')->find($id);
return new Response(
'<html><body>Number: '.$id.'</body></html>'
);
}
}
并得到以下错误:
尝试在类“GS \ OrderBundle \ Controller \ CustomerController”上调用方法“getDoctrine” . 500内部服务器错误 - UndefinedMethodException第13行的src / GS / OrderBundle / Controller / CustomerController.php中的堆栈跟踪 - 公共函数indexAction($ id){$ customer = $ this-> getDoctrine() - > getRepository('GSOrderBundle:Customer “) - >查找($ ID);返回新的响应('Number:' . $ id . '');日志 - 1错误信息 - 匹配的路径“customer”(参数:“_ control”:“GS \ OrderBundle \ Controller \ CustomerController :: indexAction”,“id”:“1784”,“_ lute”:“customer”)DEBUG - 已通知事件“kernel.request”到监听器“Symfony \ Component \ HttpKernel \ EventListener \ DebugHandlersListener :: configure” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ ProfilerListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ DumpListener :: configure”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Bundle \ FrameworkBundle \ EventListener \ SessionListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ FragmentListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ RouterListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ LocaleListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ TranslatorListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ Security \ Http \ Firewall :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Bundle \ AsseticBundle \ EventListener \ RequestListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Bundle \ FrameworkBundle \ DataCollector \ RouterDataCollector :: onKernelController”的通知事件“kernel.controller” . DEBUG - 监听器“Acme \ DemoBundle \ EventListener \ ControllerListener :: onKernelController”的通知事件“kernel.controller” . DEBUG - 通知事件“kernel.controller”到侦听器“Symfony \ Component \ HttpKernel \ DataCollector \ RequestDataCollector :: onKernelController” . DEBUG - 监听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ ControllerListener :: onKernelController”的通知事件“kernel.controller” . DEBUG - 通知事件“kernel.controller”到侦听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ ParamConverterListener :: onKernelController” . DEBUG - 监听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ HttpCacheListener :: onKernelController”的通知事件“kernel.controller” . DEBUG - 通知事件“kernel.controller”到侦听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ SecurityListener :: onKernelController” . DEBUG - 监听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ TemplateListener :: onKernelController”的通知事件“kernel.controller” . CRITICAL - 未捕获的PHP异常Symfony \ Component \ Debug \ Exception \ UndefinedMethodException:“在类”GS \ OrderBundle \ Controller \ CustomerController“上尝试调用方法”getDoctrine“ . ”在C:\ xampp \ htdocs \ goodstuff \ src \ GS \ OrderBundle \ Controller \ CustomerController.php第13行DEBUG - 通知事件“kernel.request”到监听器“Symfony \ Component \ HttpKernel \ EventListener \ DebugHandlersListener :: configure” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ ProfilerListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ DumpListener :: configure”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Bundle \ FrameworkBundle \ EventListener \ SessionListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ FragmentListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ RouterListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ LocaleListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Component \ HttpKernel \ EventListener \ TranslatorListener :: onKernelRequest”的通知事件“kernel.request” . 调查 - 通知事件“kernel.request”到监听器“Symfony \ Component \ Security \ Http \ Firewall :: onKernelRequest” . DEBUG - 监听器“Symfony \ Bundle \ AsseticBundle \ EventListener \ RequestListener :: onKernelRequest”的通知事件“kernel.request” . DEBUG - 监听器“Symfony \ Bundle \ FrameworkBundle \ DataCollector \ RouterDataCollector :: onKernelController”的通知事件“kernel.controller” . DEBUG - 监听器“Acme \ DemoBundle \ EventListener \ ControllerListener :: onKernelController”的通知事件“kernel.controller” . DEBUG - 通知事件“kernel.controller”到侦听器“Symfony \ Component \ HttpKernel \ DataCollector \ RequestDataCollector :: onKernelController” . DEBUG - 监听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ ControllerListener :: onKernelController”的通知事件“kernel.controller” . DEBUG - 通知事件“kernel.controller”到侦听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ ParamConverterListener :: onKernelController” . DEBUG - 监听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ HttpCacheListener :: onKernelController”的通知事件“kernel.controller” . DEBUG - 通知事件“kernel.controller”到侦听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ SecurityListener :: onKernelController” . DEBUG - 监听器“Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ TemplateListener :: onKernelController”的通知事件“kernel.controller” .
1 回答
您需要扩展Symfony的
Controller
类才能使用getDoctrine()
方法 .所以:
(你也可以define controller as a service但这是更复杂的解决方案)