2016-10-14 2 views
1

У меня проблема с глобальными переменными в laravel. Я знаю о представлении композитора, и мой вопрос не связан с этой темой. Как я могу сделать такую ​​простую вещь в виде laravel (* .blade.php | .php) шаблона? , например, это пример кода из одного из моих взглядов ( .blade.php | * .php):Глобальная переменная blade-сервера Laravel

<?php 
    function myFunc() { 
    global $myvar; 
    if (! $myvar) { 
     $myvar = 'my var is empty'; 
    } 
    dd($myvar); 
    } 

    $myvar = 'my var value'; 
    myFunc(); 

В конце выполнения он показывает «мой вар пуст», а не " my var value '. Кто-нибудь знает, почему это происходит?

+0

первым, поэтому вам нужно запустить 'php' в ваш клинок? Я использовал его в некоторых своих представлениях без проблем '' – Sachith

+0

@Sachith Я просто хочу упростить проблему, я должен использовать эти коды 'php' в моем проекте, главная проблема - это ** global ** keyword it doesn ' t работает должным образом. –

ответ

0

Лучшим решением является использование фасада Config. Вы можете создать новый файл конфигурации и установить в вашем случае глобальные переменные статически. Но лучшей особенностью этого фасада являются методы get() и set(), которые позволяют динамически определять эти переменные. См: Set Global variables in Laravel 5

В вашем случае:

<?php 
function myFunc() { 
$myvar = Config::get('vars.myvar'); 
if (! $myvar) { 
    $myvar = 'my var is empty'; 
} 
dd($myvar); 
} 

Config::set('vars.myvar'); 
myFunc(); 

Убедитесь, что вы импортировать Config фасад с помощью use на верхней части файла.

+0

Это выглядит хорошо, но это не подходит для моей ситуации. Я просто хочу решить эту проблему, потому что мне приходится работать с функциями, которые создаются ранее. –

+0

Но это работает так же, как использование «глобального», не так ли? Я действительно не понимаю, почему использование способа Config не является тем, что вы ищете? Пожалуйста, просветите нас! Кстати, вы не должны использовать это внутри Blade, его плохая практика. –

+0

Мне нужно интегрировать wordpress и laravel для моей компании, и я хочу использовать визуальный композитор для некоторой части моего сайта. и это единственный вопрос, который у меня есть. –

0

Наконец-то я нашел свой ответ, у него есть проблема с областью. потому что Laravel использует класс и методы, чтобы получить вид так на основе этой страницы: Информацию по http://php.net/manual/en/language.variables.scope.php#98811

так что мы можем написать код так:

<?php 
    function myFunc() { 
    global $myvar; 
    if (! $myvar) { 
     $myvar = 'my var is empty'; 
    } 
    dd($myvar); 
    } 

    global $myvar; // This line is the key 
    $myvar = 'my var value'; 
    myFunc(); 
Смежные вопросы