use*_*960 4 php mysql doctrine symfony doctrine-orm
我正在尝试使用symfony/doctrine创建一个小应用程序来读取表中的记录.我的步骤:
3)创建了GS\OrderBundle\Entity\CustomerRepository.php(我不知道为什么我还需要它,它是自动生成的).源代码:
namespace GS\OrderBundle\Entity;
use Doctrine\ORM\EntityRepository;
class CustomerRepository extends EntityRepository
{
}
Run Code Online (Sandbox Code Playgroud)
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>'
);
}
}
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
尝试在类"GS\OrderBundle\Controller\CustomerController"上调用方法"getDoctrine".
500内部服务器错误 - UndefinedMethodException
堆栈跟踪
在第13行的src/GS/OrderBundle/Controller/CustomerController.php中 - 公共函数indexAction($ id){$ customer = $ this-> getDoctrine() - > getRepository('GSOrderBundle:Customer') - > find($ id ); 返回新的响应('Number:'.$ id.''); 日志 -
1错误信息 - 匹配的路线"customer"(参数:"_ control":"GS\OrderBundle\Controller\CustomerController :: indexAction","id":"1784","_ lute":"customer")DEBUG - 通知事件" kernel.request"to listener"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 - 监听器"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector :: onKernelController"的通知事件"kernel.controller".DEBUG - 通知事件"kernel.controller"到侦听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener :: onKernelController".DEBUG - 通知事件"kernel.controller"到侦听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener :: onKernelController".DEBUG - 通知事件"kernel.controller"到侦听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener :: onKernelController".DEBUG - 监听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener :: onKernelController"的通知事件"kernel.controller".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".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 - 监听器"Symfony\Component\HttpKernel\DataCollector\RequestDataCollector :: onKernelController"的通知事件"kernel.controller".DEBUG - 通知事件"kernel.controller"到侦听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener :: onKernelController".DEBUG - 通知事件"kernel.controller"到侦听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener :: onKernelController".DEBUG - 通知事件"kernel.controller"到侦听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener :: onKernelController".DEBUG - 监听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener :: onKernelController"的通知事件"kernel.controller".DEBUG - 监听器"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener :: onKernelController"的通知事件"kernel.controller".
您需要扩展Symfony的Controller类才能使用getDoctrine()方法.
所以:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class CustomerController extends Controller
{
public function indexAction($id)
{
$customer = $this->getDoctrine()->getRepository('GSOrderBundle:Customer')->find($id);
return new Response(
'<html><body>Number: '.$id.'</body></html>'
);
}
}
Run Code Online (Sandbox Code Playgroud)
(您也可以将控制器定义为服务,但这是更复杂的解决方案)
| 归档时间: |
|
| 查看次数: |
13590 次 |
| 最近记录: |