IOT TELEMATIKA
ВПК ПОТОК телематические решения 21 в
Назад к списку

SLIMPHPH TWIG PDO Примеры работы скриптов

Всем добрый день. Далее будет описан примерный скрипт работы с фраемфорком SLIMPHP с использованием модулей TWIG и PDO.


<?php

set_time_limit( 0 );

ini_set( 'display_errors', 'On' ); // сообщения с ошибками будут показываться

error_reporting( E_ALL ); // E_ALL - отображаем ВСЕ ошибки

/*Данная часть отвечает за работу и правильное отображение ошибок*/

use DI\Container;

use Slim\Factory\AppFactory;

use Slim\Views\Twig;

use Slim\Views\TwigMiddleware;

use core\controllers\SystemUserController as SystemUser;

use Psr\Http\Message\ResponseInterface as Response;

use Psr\Http\Message\ServerRequestInterface as Request;

/*Это имена для зоны видимости, без них будут сыпаться ошибки*/

 require __DIR__ . '/vendor/autoload.php';

//Каталог от композера, без него работать адекватно не будет

// Объявим контейнер

 $container = new Container();// контейнер для шаблоновAppFactory::setContainer($container);

// Добавления контейнера шаблонов в приложение

// Установим контейнер шаблонизатора TWIG

$container->set('view', function() {

return Twig::create('core/views'/*, ['cache' => 'cache']*/);});

// вот тут мы создаем контейнер. если вам нужно. чтобы все быстро менялось отключайте кэш

 // Создадим приложение

$app = AppFactory::create();

// Установим стартовую папку

$app->setBasePath('/test');

 //Чтобы не было проблем от куда брать ссылки на файлы

// Добавим TWIG в Middleware

$app->add(TwigMiddleware::createFromContainer($app));

$app->addRoutingMiddleware();

 // Настройка ошибок

$errorMiddleware = $app->addErrorMiddleware(true, true, true);

$app->addBodyParsingMiddleware();// Подключим роуты

$folders = glob(__DIR__ . "/core/routes/*");

foreach($folders as $folder) {

$files = glob($folder."/*.php");

 foreach($files as $file) {

 require_once $file;

}

 }

$pdo = new \Slim\PDO\Database('mysql:host=127.0.0.1:3306;dbname=675467','45674567','');

$container = $app->getContainer();

 /*В данный момент так подключается база данных от slimphp PDO*/

// Render from string

$app->get('/hi/{name}', function ($request, $response, $args) {

$str = $this->get('view')->fetchFromString( '<p>Hi, my name is {{ name }}.</p>', [ 'name' => $args['name'] ]);

$response->getBody()->write($str);

return $response;

});// Пример создания ответа без использования шаблонизатора twig

$app->get('/', function ($request, $response, $args) {

global $pdo; //создаем зону видимости внутри функции

$stt = $pdo->select()->from('user')->where('user','=','Дмитрий')->execute();// делаем запрос в базу данных

$jeux = $stt->fetchAll(0);//Достаем ответ массим массивов //

$result = var_dump($jeux);

$result = $jeux['0'];// выбираем нудевой массив массивов

$result1 = $result["user"];// забираем значение из ассативного массива

return $this->get('view')->render($response, 'index.twig', [ 'title' => 'Главная страница', 'db' => $result1 ]);// Возрашаем шаблон

});

$app->post('/datapost/', function ($request, $response, $args) {

$params = $request->getParsedBody();

$data1 = $params['data1'];

return $this->get('view')->render($response, 'posttest.twig', [ 'data1' => $data1 ]);

});

$app->get('/data/{request_user}', function ($request, $response, $args) {

$arr_data_user = explode("&", $args['request_user']);

return $this->get('view')->render($response, 'data.twig', [ 'title' => 'Главная страница', 'arr_data' => $arr_data_user ]);

});


$app->run(); 

Ниже пример файла шаблона главной страницы:

<!doctype html>

<html lang="ru">

<head> <meta charset="utf-8" />

<title>{{ title }}</title>

<link rel="stylesheet" href="style.css" />

</head>

<body>

<div id="header">

{{ include('header.twig') }} //Подгружаем шаблон в шаблон

{% block header %} {% endblock %}

</div>

 <div id="content"> <h1>Типо главная страница</h1><br/>

<form action="/test/datapost/" method="post">

Значение А: <input type="text" name="data1" value="1">

Значение Б: <input type="text" name="data2" value="2">

 <input type="submit" value="Отправить"></form></div>

{% if arr_data != ''%} echo arr_data;{% endif %}// Сюда вставляем ранее отправленные данные

<div id="info pdo">

{{ db }} //Так мы указываем, что нужно вставитьнашу переменную сюда заметьте она без $

</div>

<div id="footer">

{{ include('footer.twig') }} //Импортируем в шаблон шаблон

{% block footer %} {% endblock %} указываем куда вставить

 </div>

</body>

 </html>

Сделано на © 2018
Информация на сайте не является публичной офертой