2016-04-14 2 views
0

Я использую базовую аутентификацию Laravel, но я действительно пытаюсь использовать объект Auth в представлениях.Laravel and Twig Bridge печать Объект Auth

Есть хорошие примеры использования Blade, но я использую Twig (ветряный мост) и не могу решить эту проблему.

Я могу vardump(Auth::user()->name) в моем контроллере в обычном php, но как мне получить то же самое в файле twig (мой файл вида)?

Как мне сделать что-то подобное;

{% if auth.guest %} 

or;

{{ Auth.user().name }} 

Я пробовал так много разных способов, но просто ничего не получил.

ответ

0

Это связано с тем, что работа веток, доступ к статическим переменным/классам или статическим методам в классах невозможна без добавления функции в среду Twig.

Вы можете зарегистрировать функцию следующим образом:

$twig = new Twig_Environment($loader); 
$twig->addFunction('staticCall', new Twig_Function_Function('staticCall')); 

function staticCall($class, $function, $args = array()) 
{ 
    if (class_exists($class) && method_exists($class, $function)) 
     return call_user_func_array(array($class, $function), $args); 
    return null; 
} 

Тогда я думаю, что вы должны быть в состоянии сделать:

{% if staticCall('Auth', 'guest') %} 
    Hi there stranger, why don't you <a href="/login">login</a>? 
{% endif %} 

Я взял код из этого ответа: twig template engine, using a static function or variable

+0

Может ли это Помогите; https://github.com/rcrowe/TwigBridge/blob/master/src/Extension/Laravel/Auth.php – mikelovelyuk

+0

Собственно, да. auth_guest будет одним! Также это также может помочь: https://github.com/rcrowe/TwigBridge/blob/master/src/Extension/Loader/Facades.php посмотреть /config/twigbridge.php, а затем расширения => фасады, которые должны быть такими , это довольно хорошо документировано! TIL тоже! :-) –

+0

Я бы сказал, что это плохо документировано тем, кто не знает, что делать. Я бы сказал, это ужасная документация. Я понятия не имею, как это использовать. Смотрите мои обновления ... – mikelovelyuk