我在Ubuntu上運行Apache和PHP 17.04 我正在使用樹枝。我像這樣安裝了Twig。如何使用樹枝創建擴展
cd /var/www/html/my-new-website
composer install twig/twig
composer require twig/twig
在這一點上我一直在用嫩枝的方法是:首先,我創建一個PHP文件,並做一些東西,建立一個數組並呈現與陣列數據的模板。接下來,我將頁面的各個部分分開放置在模板中。
這裏是一個示例index.php,它創建一個目錄數組,然後使用位於templates目錄中的files.html.twig進行渲染。
<?php
require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates');
$twig = new Twig_Environment($loader, array(
'cache' => 'cache',
));
$dir = "path/to/dir";
$exclude = array(".","..",".*","index.php");
$files = array_diff(scandir($dir), $exclude);
/*
echo ''; print_r($files);
*/
$template = $twig->loadTemplate('files.html.twig');
echo $template->render(['files' => $files]);
?>
這裏是files.html.twig,它擴展了 「base.html.twig」
{% extends "base.html.twig" %}
{% block title %}
My Directory Listing
{% endblock %}
{% block content %}
{% for file in files %}
<li><a href="{{ file | url_encode }}">{{ file }}</a></li>
{% endfor %}
{% endblock %}
和base.html.twig包含導航欄和頁腳主包裝。這一切都按預期工作。
現在我有我的base.html.twig中的導航欄,它只是HTML我必須編輯的項目。
我已經做了一個php函數來獲取在模板(navbar.html.twig)中工作的navbar數組,但問題是我必須在每個創建的頁面中放入或包含這個php函數。我希望我的navbar.html.twig模板直接從php函數獲取數組。
我相信我需要創建一個樹枝擴展(php函數)並註冊它。我已閱讀關於此的文檔(全部似乎是爲了一個完整的symfony安裝,我只使用樹枝)。
我認爲這篇文章是在正確的道路上,但沒有給我我需要了解Call PHP function from Twig template
的信息,我沒有得到
- 在那裏把我的PHP功能?我可以創建一個名爲擴展名的文件夾並在其中放置一個navbar-list-funtion.php文件嗎?
- 在哪裏註冊函數,以便可以從模板中調用?一些文檔說要註冊在app/config/services.yml(我沒有這個文件或目錄)
- 我把PHP函數放在一個公認的地方,然後註冊它,...我將如何調用模板navbar.html.twig中返回的數組?
如果你沒有使用像框架symfony中,只要按照官方的[文件]中的步驟(https://twig.symfony.com/doc/2.x/advanced.html#creating-an-extension) – DarkBee
謝謝@darkbee,我一直並將繼續閱讀文檔。我只是不明白,因此我在這裏發佈的原因。 – dreadycarpenter