Php “控制器作为应用程序中的服务”;对非对象调用成员函数has();

Php “控制器作为应用程序中的服务”;对非对象调用成员函数has();,php,web-applications,symfony,controller,bundle,Php,Web Applications,Symfony,Controller,Bundle,我正在Symfony用户Varspool/WebsocketBundle中执行我的第一个WebSocket应用程序。 我需要为投票服务器端插入数据。 为此,我制作了一个控制器,当用户选择投票答案时,它会在数据库中插入数据 遵循此文档:我遇到了一个“调用未定义的方法forward()”错误。这应该是因为我在应用程序中,而不是在控制器中 我看到很多事情,比如在控制器内重新启动内核,还有很多其他奇怪的事情,比如: $kernel = new \AppKernel('dev', true); $kern

我正在Symfony用户Varspool/WebsocketBundle中执行我的第一个WebSocket应用程序。 我需要为投票服务器端插入数据。 为此,我制作了一个控制器,当用户选择投票答案时,它会在数据库中插入数据

遵循此文档:我遇到了一个“调用未定义的方法forward()”错误。这应该是因为我在应用程序中,而不是在控制器中

我看到很多事情,比如在控制器内重新启动内核,还有很多其他奇怪的事情,比如:

$kernel = new \AppKernel('dev', true);
$kernel->loadClassCache();
$kernel->boot();
$controller->setContainer($kernel->getContainer()); 
[编辑] 我向您展示了我的最后一次尝试,即在非对象上显示对成员函数has()的调用

我的控制器即服务

Edit1-更新结构

use Doctrine\ORM\EntityManager;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Krum\AGBundle\Application\ExempleApplication;
use Krum\AGBundle\Form\AGVoteSetType;
use Krum\AGBundle\Form\AGVoteAffichType;
use Krum\AGBundle\Form\AGVoteType;
use Krum\AGBundle\Entity\AGDummy;
use Krum\AGBundle\Entity\AGVote;
use Krum\AGBundle\Entity\AGReponse;
use Krum\AGBundle\Entity\AGScrutin;
use Krum\KBundle\Entity\Users;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

use Symfony\Component\DependencyInjection\ContainerInterface;


class AGServicesController extends Controller {

    protected $em;    

    public function __construct($entityManager)
    {
        $this->entityManager = $entityManager;
    }




    public function get($service){           
        return $this->container->get($service);
    }

   public function voteeffective($vote, $reponse, $users) {
       $em = $this->em;
       $userbyFOS = $em->createQueryBuilder('u')
              ->select('u')
              ->from('KrumKBundle:Users', 'u')
              ->leftJoin('u.utilisateur', 'ut')
              ->where('ut.id = ?1')
              ->setParameter(1, $users)
              ->getQuery();
      $user = $userbyFOS->getOneOrNullResult();      
      $userstatus = $em->createQueryBuilder('scru')
              ->select('scru')
              ->from('KrumAGBundle:AGScrutin', 'scru')
              ->where('scru.users = ?1')
              ->andWhere('scru.AGVote = ?2')
              ->andWhere('scru.AGReponse = ?3')
              ->setParameters(array(
                      1 => $user,
                      2 => $vote,
                      3 => $reponse
                      ))
              ->getQuery();
       $stat = $userstatus->getResult();

      if ($stat == NULL) {
         $votety = $em->getRepository('KrumAGBundle:AGVote')->findOneById($vote);
         $reponsety = $em->getRepository('KrumAGBundle:AGReponse')->findOneById($reponse);

         $scrutinty = new AGScrutin();
         $scrutinty->setAGReponse($reponsety);
         $scrutinty->setAGVote($votety);
         $scrutinty->setUsers($user);
         $scrutinty->setType("AGScrutin");
         $em->persist($scrutinty);
         $em->flush();

         return "vote-ok:".$scrutinty->getId();
      } else {
         return "vote-false";
      }
    }  

}
我的应用程序(WebSocket服务器)

My config.yml

parameters:
    agservices.class:      Krum\AGBundle\Controller\AGServicesController

services :
  agservices:
    class : %agservices.class%
    arguments :
      container : "@service_container"
services.yml

parameters:
    agservices.class:      Krum\AGBundle\Controller\AGServicesController

services :
  agservices:
    class : %agservices.class%
    arguments :
      container : "@service_container"
编辑1:sercices.yml配置

krum.agservices:
    class: Krum\AGBundle\Controller\AGServicesController    
    arguments: ["@doctrine.orm.default_entity_manager"]
所有的答案或想法都是可感知的

谢谢收看;)

**编辑1:现在,我有另一个例外错误

警告:缺少Krum\AGBundle\Controller\AGServicesController::u construct(),在上的/opt/lampp/htdocs/Krum/src/Krum/AGBundle/Application/exampleapplication.php中调用 第62行,并在/opt/lampp/htdocs/Krum/src/Krum/AGBundle/Controller/AGServicesController.php第34行中定义 *


我认为services.yml应该自动将参数添加到正确的条令实体管理器中,或者它只指定参数的类型,我必须在调用控制器时手动添加它?

1。您应该提供完整的异常堆栈跟踪。2.您的服务定义将服务容器作为参数传递给控制器的构造函数,但您的_构造没有任何参数。是的,我使用service.yml使用put a parameters进行了尝试,但我不确定其工作原理,请参阅下文了解更多信息;)更新我的帖子时有新闻更改,但仍然卡住:)