Софтуерно Инженерство
Loading...
ypetrov avatar ypetrov 4 Точки

Как да изтегля от сесията user-а или някакъв идентификатор в symfony?

Пак ползвам security.yml конфигурацията за логин, логин формата ми е направена с билдъра, не е като в документацията, направих си и валиден логаут, работят добре, ма не мога да разбера от къде да си дръпна някакъв идентификатор като username или поне email?

Този токън и потребител в сесия ли се запаметяват или къде?

Тагове:
0
PHP Web Development 15/12/2016 03:19:27
b.yordanov avatar b.yordanov 146 Точки

в контролер го вземаш с $this->getUser(); в twig мисля беше {{app.user}}

в контролера може също и 

$user = $this->get('security.token_storage')->getToken()->getUser();

а с $this->get('security.token_storage')->getToken(); взимаш само токен-а 

0
15/12/2016 10:04:27
ypetrov avatar ypetrov 4 Точки

Първото решение снощи се опитах да го направя, но ме стана, ще опитам след малко с второто.

0
b.yordanov avatar b.yordanov 146 Точки

пусни и код да видим ако не стане, може там някъде да е грешката 

0
ypetrov avatar ypetrov 4 Точки

За да не говоря на празно това е от първия вариант който бях опитал вчера проблема:

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class Bundle\Entity\User could not be converted to string") - това е при {{ app.user }}

Същото е когато се добави $this->getUser(); в defaultcontroller.php някъде и се изтегли от променлива. Пробвах и втория ти вариант at the most very top преди всичко и пак не чатка. Не знам коя част от кода искаш за това ти слагам безобидната функция в която се намира:

    public function indexAction(Request $request)
    {
        return $this->render('default/index.html.twig', [
            'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
            'ver'      => $this->ver,
            'username'     => $this->get('security.token_storage')->getToken()->getUser(),
        ]);

    }

 

Като цяло грешката е една и съща и за това рекох да няма някакъв друг вариант, които да е очевиден, но не и за мен..

0
15/12/2016 10:39:25
b.yordanov avatar b.yordanov 146 Точки

$this->getUser() ти връща обект, затова имаш и тази грешка  Object of class Bundle\Entity\User could not be converted to string. От него трябва да извикаш ид-то $this->getUser()->getId(); същото важи и за twig {{app.user.id}} респектвно и за username

направи си един дъмп на app.user и ще видиш какво можеш да извикаш от него

0
15/12/2016 11:08:08
ypetrov avatar ypetrov 4 Точки

Би било логично да го направя като не знам какво точно връща а ме интересува... въпроса е защо не съм го направил до сега. Благодаря за подсказката. :)

0
b.yordanov avatar b.yordanov 146 Точки

Трябва да четеш повече логовете :) За да видиш какво има в даден обект (в твоя случай $this->getUser() ) използвай фунцията dump() на симфони вместо var_dump() и те така...

0