Quasar, SlimPhp, Twig
Этот репозиторий предоставит вам рабочую реализацию:
- SlimPhp
- Шаблонизатор Twig
- Фреймворк Quasar (на базе Vue)
Он призван объяснить, как вы можете использовать три из них вместе, чтобы получить мощность SlimPHP для серверной части, безопасную гибкость Twig для шаблонов графического интерфейса PHP и обширную коллекцию компонентов Quasar для графического интерфейса.
Требования и установка
Для этого репозитория вам необходимо установить как минимум PHP7 и композитор. Чтобы запустить этот «сайт», клонируйте репозиторий GIT. Затем перейдите в базовый каталог и выполните команду composer install
. Это создаст папку «Vender». Когда это будет сделано, вы можете запустить встроенный php-сервер с помощью php -S localhost:8080 -t public
. Откройте браузер и перейдите по этому URL-адресу, чтобы просмотреть результат.
SlimPhp
Я не буду объяснять установку SlimPHP. Вместо этого я указываю на онлайн-документацию, которую можно найти здесь. В репозитории этого объяснения вы найдете структуру, больше основанную на MVC (без интеграции с базой данных). Короче говоря, вот что происходит, когда вы открываете URL-адрес http://localhost:8080/index.php
. Это может быть некорректно программно, но работает для объяснения.
- файл
..\config\routes.php
говорит перейти к controllerHome
- в
..\config\dependencies.php
внизу есть определение для controllerHome
, которое передает view
и logger
классу HomeController
в пространстве имен Sample\Controllers
composer.json
говорит, что файлы приложения Sample
находятся в ..\src\Sample
, поэтому класс контроллера находится в ..\src\Sample\Controlles
в файле с именем HomeController.php
Веточка
Выше было объяснено, куда идет URL. Следующим шагом является вызов шаблона из Twig для отображения чего-либо. Установка Twig описана в документации SlimPHP. Документацию по Twig можно найти здесь. Следующие шаги сделаны, продолжая с того места, где мы остановились, чтобы отобразить что-то.
- в файле класса контроллера вы можете видеть, что есть функция
invoke
. Это вызывает шаблон render
для ветки и передает ответ, имя шаблона и, при желании, некоторые параметры.
- расположение шаблона настроено на
..\src\Sample\Views
в соответствии с файлом ..\config\bootstrap.php
, в котором определен каталог. Это определение используется в ..\config\dependencies.php
- когда вы смотрите на
..\src\Sample\Views\home\main.twig
, вы видите строку {% extends 'layout.twig' %}
, которая означает, что этот файл включен в ..\src\Sample\Views\layout.twig
. Если вы посмотрите внимательно, вы увидите, что он добавлен в место, отмеченное как {% block blMainContent %}{% endblock %}
.
{{ strMessage }}
в этом файле заменяется содержимым переменной 'strMessage', которая передается в шаблон
Квазар
Наконец, Quasar используется для графического интерфейса. В этом примере не очень красивое оформление и тому подобное, но всю документацию по компонентам можно найти здесь. Этот репозиторий использует реализацию CDN. Это также описано в документации Quasar на этой странице. Короче так и делается.
- в
..\src\Sample\Views\layout.twig
добавлена ссылка на набор иконок
- в
..\src\Sample\Views\layout.twig
добавлена ссылка на анимацию
- в
..\src\Sample\Views\layout.twig
добавлена ссылка на квазар CSS (в данном случае MAT)
- в
..\src\Sample\Views\layout.twig
добавлена ссылка на vue (в теле!)
- в
..\src\Sample\Views\layout.twig
добавлена ссылка на quasar (в теле, после vue!)
Эти шаги позволяют использовать Quasar. Если вы сделаете только это, вы получите стиль, но не объекты. Итак, вам нужно инициировать quasar и vue, что здесь делается с помощью этого кода.
<div id='q-app'>
<q-layout>
<q-layout-header>
header
</q-layout-header>
<q-page-container>
{% block blMainContent %}{% endblock %}
</q-page-content>
<q-layout-footer>
footer
</q-layout-container>
</q-layout>
</div>
<script>
new Vue({
el: '#q-app',
delimiters: ['[[', ']]'],
data: function () {
return {}
},
methods: {}
})
</script>
магия
Теперь волшебство начинает завершать реализацию, поэтому свойство данных strMessage2
, найденное в main.twig
, также можно использовать. Как упоминалось ранее, Vue также использует {{
и }}
, так что это проблема. Чтобы обойти это, в определение Vue, показанное выше, добавлена строка. delimiters: ['[[', ']]']
говорит Vue использовать вместо этого [[
и ]]
, так что это то, что вы видите в main.twig
.
person
Edgar Koster
schedule
04.11.2018