Treinamento Drupal
Dia 1
Instalação
Biblioteca mínimas para instalação no Debian 12:
sudo apt-get install php php-common php-cli php-gd php-curl php-xml php-mbstring php-zip php-sybase php-mysql php-sqlite3
sudo apt-get install mariadb-server sqlite3 git
Instalação do composer:
curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Configuração do banco de dados
sudo mariadb
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;
create database drupal;
quit
Instalação do Drupal
composer create-project drupal/recommended-project site-treinamento
cd site-treinamento
composer require drush/drush
./vendor/bin/drush --version
Criação de um site Drupal:
./vendor/bin/drush site:install standard \
--db-url="mysql://admin:admin@localhost/drupal" \
--site-name="Site Treinamento" \
--account-name="admin" \
--account-pass="admin" --yes
Subindo um server local:
./vendor/bin/drush rs 0.0.0.0:8000
Criação de módulo:
Criação de um módulo chamado treinamento
:
./vendor/bin/drush generate module
Habilitando módulo treinamento
./vendor/bin/drush pm-install treinamento
O comando a seguir vai gerar o controller TreinamentoController e a respectiva rota, no controller terá um método chamado index(), assim como uma rota /treinamento apontando para esse método:
./vendor/bin/drush generate controller
Module machine name:
➤ treinamento
Class [TreinamentoController]
➤ TreinamentoController
Route name [treinamento.example]:
➤ treinamento.index
Route path [/treinamento/index]:
➤ /treinamento
Limpando cache:
./vendor/bin/drush cr
twig
Crie o arquivo treinamento.html.twig e coloque um html qualquer nele:
mkdir web/modules/treinamento/templates
touch web/modules/treinamento/templates/index.html.twig
public function index() {
$variavel1 = 'bom dia';
$variavel2 = 'boa noite';
return [
'#theme' => 'index',
'#variavel1' => $variavel1,
'#variavel2' => $variavel2,
];
}
Por fim, criar um arquivo treinamento.module com a definição do template:
<?php
/**
* Implements hook_theme().
*/
function treinamento_theme($existing, $type, $theme, $path) {
return [
'index' => [
'variables' => [
'variavel1' => NULL,
'variavel2' => NULL
],
],
];
}
Twig é um motor de templates moderno para PHP que o Drupal utiliza, exemplo:
{% if date("H") < 12 %}
{{ variavel1 }}
{% else %}
{{ variavel2 }}
{% endif %}
Exercício 1
Exercício 1 - Importação de Dados e Estatísticas com Laravel
Objetivo: Importar dados de um arquivo CSV e exibir estatísticas desses dados no Drupal.
https://raw.githubusercontent.com/mwaskom/seaborn-data/master/exercise.csv
1) Criar o Controller e a Rota para Importação
- Crie um controller chamado ExerciseController com o método importCsv.
- Defina uma rota
exercises/importcsv
que aponte para o método importCsv do controller. - No método importCsv, implemente a lógica para ler o arquivo
exercise.csv
.
Dica: Você pode usar a classe League\Csv\Reader
(disponível via Composer) para facilitar a leitura do CSV.
2) Após ler o arquivo, apresente as seguintes estatísticas:
- quantidades de linhas da coluna pulse para os casos rests, walking e running
- calcule as média da coluna pulse para os casos rests, walking e running, conforme tabela abaixo
Exemplo de saída:
exercise.csv | rest | walking | running |
---|---|---|---|
Qtde linhas | XX | XX | XXX |
Média Pulse | XX | XX | XXX |
Workaround PHP 7.4
Instalação do php 7.4 para subir drupal da FFLCH (temporário):
sudo apt install apt-transport-https lsb-release ca-certificates curl -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update
Instalação das dependências em php7.4:
sudo apt-get install php7.4 php7.4-common php7.4-cli php7.4-gd php7.4-curl php7.4-xml php7.4-mbstring php7.4-zip php7.4-sybase php7.4-sqlite3 php7.4-mysql
Trocar versão do php para 7.4:
sudo update-alternatives --set php /usr/bin/php7.4
sudo update-alternatives --set phar /usr/bin/phar7.4
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4