Как напечатать значения в массиве в веточку? - PullRequest
0 голосов
/ 26 сентября 2018

у меня есть этот массив в php:

$pageTemplate = [
                'pageHeader' => [
                        'pageMetatags' => $this->_metatags->getKeywords('PAGE_TXT', 1),
                        'messageBox' => $messageBox,
                        'developerName' => $this->_config->developer_name,
                        'developerUrl' => $this->_config->developer_name,
                        'baseHref' => $this->_config->app_path
                    ,
                    'pageBody' =>
                        [
                            'interfaceCMS' => '',
                            'other' => ''
                        ]
                    ]];

результат этого массива из php:

Array
(
    [pageHeader] => Array
        (
            [pageMetatags] => Array
                (
                    [kwTitle] => title 1
                    [kwDescription] => desc 1
                    [kwKeywords] => key 1
                    [kwContentType] => xontent
                    [kwRobots] => robots
                    [kwRevisit] => revisir
                    [kwCopyrights] => 1
                    [kwGooglebot] => googlebot
                    [kwPublisher] => 2
                )

            [messageBox] => Array
                (
                    [messageType] => SUCCESS_STATUS
                    [html] => kod html Pierwszy administrator i firma zostały utworzone!  success error
                    [description] => Pierwszy administrator i firma zostały utworzone!
                )

            [developerName] => byname
            [developerUrl] => byname
            [baseHref] => http://localhost/admin
            [pageBody] => Array
                (
                    [interfaceCMS] => 
                    [other] => 
                )

        )

)

как я могу загрузить и отобразить следующие данные в .twigfile:

- kwTitle
- kwRevisit
- all from: pageBody 

Я пробовал что-то подобное, но это не работает:

<base href="{{ arrayName['baseHref'] }}" />
<base target="_blank" href="{{ ['pageHeader']['baseHref'] }}" />

Кто-нибудь знает, как это сделать?Я пробовал разные варианты, но ни один из них не показывает мне ничего :( Я прошу помощи

ОБНОВЛЕНИЕ Мой VIEWCLASS:

namespace Core\Views;

use Core\Libraries\PsException;
use Twig;
use Twig_Environment;
use Core\Libraries\Registry;


class View
{
    public static function render(string $view, array $args = [])
    {
        extract($args, EXTR_SKIP);
        $config = Registry::register("Core\Libraries\Config");

        $viewFile = null;
        if (ADMIN_MODE === true) {
            $viewFile = "../" . $config->backend_view_path . "/" . $view;
        } else {
            $viewFile = "../" . $config->frontend_view_path . "/" . $view;
        }

        if (is_readable($viewFile)) {
            require_once $viewFile;
        } else {
            //$psException->registerError("$viewFile not found");
            throw new \Exception("$viewFile not found");
        }
    }

    public static function renderTemplate(string $template, array $args = [])
    {
        static $twig = null;

        if ($twig === null) {
            $config = Registry::register("Core\Libraries\Config");
            $viewDirectory = null;

            $cacheDirectory = null;

            if (ADMIN_MODE === true) {
                $viewDirectory = $config->backend_view_path;
                $cacheDirectory = $config->backend_cache;
            } else {
                $viewDirectory = $config->frontend_view_path;
                $cacheDirectory = $config->frontend_cache;
            }


            $loader = new \Twig_Loader_Filesystem('../' . $viewDirectory);
            $twig = new \Twig_Environment($loader, ['cache' => $cacheDirectory]);

        }

        $template = str_replace("<h1>Welcome</h1>", "WELCOME!!!!!", $template);
        echo $twig->render($template, $args);
    }
}

1 Ответ

0 голосов
/ 26 сентября 2018

Когда вы отправляете переменные в представление, используя $twig->render();, второй параметр должен быть ассоциативным массивом, ключами этого массива являются имена переменных в ветке.

Например, для вашего случая:

echo $twig->render($template, array('pageTemplate' => $args));

Вы должны назвать содержимое массива, отправленного шаблону, как объект.

{{ someArray.someSubArray.SomeValue }}

Я предполагаю, что массиву присвоено имя pageTemplate для шаблона веточки.

<base href="{{ pageTemplate.pageHeader.baseHref }}" />

Иначе, если вы только что отправили массив как есть:

<base href="{{ pageHeader.baseHref }}" />

Если у вас есть маршрут, соответствующий для http://localhost/admin (предположим, вы назвали его admin),Вы можете просто назвать имя маршрута, чтобы построить ссылку следующим образом:

<base href="{{ path('admin') }}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...