Symfony 为什么函数与不在函数中的代码相关?

Symfony 为什么函数与不在函数中的代码相关?,symfony,Symfony,我有以下控制器: <?php namespace Dev\TaskBundle\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\C

我有以下控制器:

<?php

namespace Dev\TaskBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Dev\TaskBundle\Entity\User;

class UserController extends Controller
{
  /**
    * Redirects to directory where you can input new password
    *
    * @Route("/{id}", name="user_update")
    */

    public function userUpdatePanel($id)
    {

        $user = $this->getDoctrine()->getRepository('DevTaskBundle:User')->find($id);
        return $this->render('DevTaskBundle:User:userUpdate.html.twig', array('user' => $user));

    }

   /**
    * Updates password of the user
    *
    * @Route("/updatePassword", name="updatePass_action")
    */


    public function passUpdateAction(Request $request)
    {

        $em = $this->getDoctrine()->getManager();
        $id = $request->get('id');
        $user = new User();
        $user = $em->getRepository('DevTaskBundle:User')->find($id);
        $password = $request->get('passInput');
        $user->setPassword($password);
        $em->flush();

        $users = $this->getDoctrine()->getRepository('DevTaskBundle:User')->findAll();
        return $this->render('DevTaskBundle:User:accounts.html.twig', array('users' => $users));

    }

}
更改密码后,我想呈现accounts.html.twig,那么为什么userUpdate会出现错误呢?这里怎么了

accounts.html.twig的一部分,带有twig脚本:

    <table class="table table-bordered">
<thead>
    <tr>
        <th>Login</th>
        <th>Hasło</th>
        <th>Narzędzia</th>
    </tr>
</thead>
<tbody>
{% for user in users %}
    <tr>

        <td>
            {{  user.username }}
        </td>

        <td>
            {{  user.password }}
        </td>

        <td>        
            <a href="{{ path('user_update', {'id': user.id}) }}" >
            <span class="glyphicon glyphicon-pencil linkDeco" ></span>
            </a>
        {% if user.status == 1 %}    
            <a href="{{ path('deleteAction', {'name': 'User' ,'direction': 'account_panel' , 'id': user.id}) }}" >
            <span class="glyphicon glyphicon-trash linkDeco"></span>
            </a>
        {% endif %}
        </td>
    </tr>
{% endfor %}
</tbody>
</table>

知道为什么吗

Doctrine
find
方法返回对象数组,如果只需要一个结果,请使用
findOne
而不是
find

$user = $this->getDoctrine()->getRepository('DevTaskBundle:User')->findOneById($id);
    <table class="table table-bordered">
<thead>
    <tr>
        <th>Login</th>
        <th>Hasło</th>
        <th>Narzędzia</th>
    </tr>
</thead>
<tbody>
{% for user in users %}
    <tr>

        <td>
            {{  user.username }}
        </td>

        <td>
            {{  user.password }}
        </td>

        <td>        
            <a href="{{ path('user_update', {'id': user.id}) }}" >
            <span class="glyphicon glyphicon-pencil linkDeco" ></span>
            </a>
        {% if user.status == 1 %}    
            <a href="{{ path('deleteAction', {'name': 'User' ,'direction': 'account_panel' , 'id': user.id}) }}" >
            <span class="glyphicon glyphicon-trash linkDeco"></span>
            </a>
        {% endif %}
        </td>
    </tr>
{% endfor %}
</tbody>
</table>
<div>
            Username: {{ user.username }}
        </div>
Impossible to access an attribute ("id") on a null variable in DevTaskBundle:User:userUpdate.html.twig at line 24
$user = $this->getDoctrine()->getRepository('DevTaskBundle:User')->findOneById($id);