gpt4 book ai didi

php - 尝试在类 (Symfony) 上调用方法 "getDoctrine"

转载 作者:行者123 更新时间:2023-12-03 20:33:03 25 4
gpt4 key购买 nike

我正在尝试创建小型应用程序以使用 symfony/doctrine 通过 id 从表中读取记录。
我的步骤:

  • 创建 Controller
    (GS\OrderBunndle\Controller\CustomerCuntroller.php),路由。测试
    URL - 它正在工作;
  • 为客户表创建实体
    (GS\OrderBundle\Entity\Customer.php) 与列和
    setter/getter /二传手;

  • 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>'
    );
    }
    }

    并收到以下错误:

    Attempted to call method "getDoctrine" on class "GS\OrderBundle\Controller\CustomerController".

    500 Internal Server Error - UndefinedMethodException

    Stack Trace

    in src/GS/OrderBundle/Controller/CustomerController.php at line 13 - public function indexAction($id) { $customer = $this->getDoctrine()->getRepository('GSOrderBundle:Customer')->find($id); return new Response( 'Number: '.$id.'' ); Logs -

    1 error INFO - Matched route "customer" (parameters: "_controller": "GS\OrderBundle\Controller\CustomerController::indexAction", "id": "1784", "_route": "customer") DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". DEBUG - Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Acme\DemoBundle\EventListener\ControllerListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\UndefinedMethodException: "Attempted to call method "getDoctrine" on class "GS\OrderBundle\Controller\CustomerController"." at C:\xampp\htdocs\goodstuff\src\GS\OrderBundle\Controller\CustomerController.php line 13 DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DumpListener::configure". DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\TranslatorListener::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". DEBUG - Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Acme\DemoBundle\EventListener\ControllerListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelController". DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".

    最佳答案

    您需要扩展 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>'
    );
    }
    }

    (您也可以 define controller as a service 但这是更复杂的解决方案)

    关于php - 尝试在类 (Symfony) 上调用方法 "getDoctrine",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020342/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com