Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将渲染传递给我新创建的服务-Symfony_Php_Symfony_Controllers - Fatal编程技术网

Php 将渲染传递给我新创建的服务-Symfony

Php 将渲染传递给我新创建的服务-Symfony,php,symfony,controllers,Php,Symfony,Controllers,拜托,我对symfony是新手,我好像没办法做到这一点。我创建了一个简单的服务,它将检查用户状态是否为活动或已删除,如果是,则将其从应用程序中注销。我已经创建了有效的代码,然后我想成为一个坏蛋,并创建一个可以做到这一点的服务。但是没有。所以,我创建了一个服务,它打印出结果,所以它被注册并开始工作。问题是,我想我无法将控制器中的变量应用到我的服务类中。代码如下: <?php namespace WebBundle\Roles; class Roles { public function

拜托,我对symfony是新手,我好像没办法做到这一点。我创建了一个简单的服务,它将检查用户状态是否为活动或已删除,如果是,则将其从应用程序中注销。我已经创建了有效的代码,然后我想成为一个坏蛋,并创建一个可以做到这一点的服务。但是没有。所以,我创建了一个服务,它打印出结果,所以它被注册并开始工作。问题是,我想我无法将控制器中的变量应用到我的服务类中。代码如下:

<?php

namespace WebBundle\Roles;

class Roles
{

public function getApplicationId($loggedUser, $request)
{
    // Get the current user role
    /** @var $userRole array */
    $userRole = $loggedUser->getRoles();

    // Check if the user role is super admin or admin - client
    /** @var $superAdmin bool */
    $superAdmin = in_array('ROLE_SUPER_ADMIN', $userRole) ? true : false;
    $admin = in_array('ROLE_ADMIN', $userRole) ? true : false;
    if ($superAdmin) {
        /** @var $application int */
        $application = $request->get('application');
    } elseif ($admin) {
        /** @var $application int */
        $application = $loggedUser->getAppClient()->getId();
    }
    return $application;
}

public function logoutInactiveAndDeletedUsers($loggedUser)
{
    // Log out inactive or deleted users.
    if ($loggedUser->getStatus()->getStatus() == 'inactive' || $loggedUser->getStatus()->getStatus() == 'deleted' ) {

        //$this->get('security.context')->setToken(null);
        //var_dump('test');exit;
        return $this->container->render('WebBundle:Default:login.html.twig', array('last_username' => null, 'error' => null,));
    }
}
}


但如果我把这段代码放在控制器中,它会工作得很好。它会销毁令牌并将用户重定向到登录页面。请帮助我了解如何使其作为服务工作。

好的,我知道如何调用视图:

在services.yaml中添加模板作为参数

    arguments: [@templating]
然后创建属性并将其分配给构造函数:

private $templating;

public function __construct($templating)
{
    $this->templating = $templating;
}
这样称呼它:

$this->templating->render('WebBundle:Default:login.html.twig', array('last_username' => null, 'error' => null,));
现在我需要找到一个解决方案,如何为用户禁用令牌。如果有人知道的话,帮帮我,伙计(我不再吸毒了)

private $templating;

public function __construct($templating)
{
    $this->templating = $templating;
}
$this->templating->render('WebBundle:Default:login.html.twig', array('last_username' => null, 'error' => null,));