Saya menggunakan FOSuserbundle untuk memulai dengan pendaftaran Pengguna https://github.com/FriendsOfSymfony/FOSUserBundle
Saya sudah mendaftar / masuk dan keluar. Yang ingin saya lakukan sekarang adalah mengambil data pengguna yang masuk dan menyajikannya di setiap halaman situs saya. Seperti "Hai nama pengguna" di jenis header.
Sepertinya menyematkan pengontrol di app / Resources / views / base.html.twig saya adalah cara terbaik untuk melakukan ini http://symfony.com/doc/current/book/templating.html#embedding-controllers
Jadi saya menulis pengontrol saya untuk mengakses data profil pengguna. Apa yang tidak saya ketahui adalah cara mengakses metode FOS di pengontrol tertanam saya. Jadi dari Acme / UserBundle / Controller / UserController.php saya, saya ingin melakukan ini:
public function showAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException(
'This user does not have access to this section.');
}
return $this->container->get('templating')
->renderResponse('FOSUserBundle:Profile:show.html.'.$this->container
->getParameter('fos_user.template.engine'), array('user' => $user));
}
yang saya ambil dari: vendor / bundles / FOS / UserBundle / Controller / ProfileController.php
sumber
app.user.username
masih berfungsi untuk saya. Mungkin berguna untuk diketahui seseorang.Untuk symfony 2.6 ke atas kita bisa menggunakan
karena variabel global app.security untuk template Twig tidak digunakan lagi dan akan dihapus dari 3.0
Info lebih lanjut:
http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements
dan melihat variabel global di
http://symfony.com/doc/current/reference/twig_reference.html
sumber
{{ app.user.firstname }}
. Kurasa ini lebih ramah pengembang front-end.Cukup tunjukkan nama pengguna login misalnya, fungsi filter default ('') seharusnya bagus ketika pengguna TIDAK login hanya dengan menghindari pesan error yang mengganggu.
sumber