Я использую последнюю версию PhpStorm с плагином Symfony и его зависимостями и получил некоторые проблемы с завершением метода сущностей Twig.
Это моя User
сущность (работает хорошо)
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use App\Entity\UserInterface as BaseInterface;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @UniqueEntity(fields={"email"}, message="Adresse mail déjà utilisée")
*/
class User implements BaseInterface, \Serializable
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=180, unique=true)
*/
private $email;
/**
* @ORM\Column(type="json")
*/
private $roles = [];
/**
* @ORM\Column(type="string")
*/
private $password;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Profil", mappedBy="user", cascade={"persist", "remove"})
*/
private $profil;
// ...
// setters and getters auto-generated
}
И вот мое действие Controller:
/**
* @Route("/user", name="user_")
* @IsGranted("IS_AUTHENTICATED_REMEMBERED")
*/
class UserController extends AbstractController
{
/**
* @Route("/profil", name="profil")
*/
public function profil()
{
// I tried to load it from doctrine repository and also tried to add @var Profil comment
$user = $this->getUser();
return $this->render('security/user/profil.html.twig', [
'user' => $user
]);
}
// ...
}
И, наконец, мой шаблон:
{% block user_content %}
<div class="card">
<div class="card-body">
<table class="table table-hover tabless">
<tr>
<td>Email</td>
<td>{{ user.username }}</td>
</tr>
<tr>
<td>Username</td>
<td>{{ user.profil.username }}</td>
</tr>
<tr>
<td>Date Inscription</td>
<td>{{ user.profil.createdAt | date('d/m/Y') }}</td>
</tr>
<tr>
<td>Dernière Modification</td>
<td>{{ user.profil.updatedAt | date('d/m/Y') }}</td>
</tr>
<tr>
<td>Roles</td>
<td>
{% for role in user.roles %}
<span class="badge badge-primary badge-">{{ role|trans }}</span>
{% endfor %}
</td>
</tr>
<tr>
<td>Description</td>
<td>{{ user.profil.description }}</td>
</tr>
</table>
</div>
</div>
{% endblock %}
Моя проблема в том, что в шаблоне ветки PhpStorm не находит средство получения профиля из пользовательской переменной. Я попытался увидеть ссылку на пользовательскую переменную, и она отправляет меня к Symfony UserInterface
, а не к моей, поэтому я попытался создать свою собственную с помощью функции getProfil()
.
Самое странное, что если я сделаю {{ app.user.profil }}
, это полностью сработает и автоматически завершит его.