Skip to main content Link Search Menu Expand Document (external link)
  1. Treinamento Drupal
    1. Dia 1
      1. Instalação
      2. Criação de módulo:
      3. twig
      4. Exercício 1
    2. Exercício 1 - Importação de Dados e Estatísticas com Laravel
  2. Workaround PHP 7.4

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.csvrestwalkingrunning
Qtde linhasXXXXXXX
Média PulseXXXXXXX

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