Hello World!!!!
He nascut el dia {{ data }} a las {{ hora }}
$ mkdir paraules
- Descarregar, a dins del directori creat, l'arxiu $ cd paraules
$ curl -LO https://raw.githubusercontent.com/bitnami/bitnami-docker-symfony/master/docker-compose.yml
- Modificar l'arxiu per adaptar-lo al nou projecte.
$ docker-compose up
Si tot va bé, s'haurà creat un nou directori paraules amb tot el codi base del nou projecte. A més hi hauran dos serveis nous funcionant.
NAME COMMAND SERVICE STATUS PORTS
paraules-mariadb-1 "/opt/bitnami/script…" mariadb running 3306/tcp
paraules-myapp-1 "/opt/bitnami/script…" myapp running 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp
Per provar que funciona es pot carregar en un navegador la URL [[http://localhost:8000|http://localhost:8000]]
El resultat hauria de ser:
{{ :docker-symfony-1.png?nolink&600 |}}
===== Interaccionant amb els contenidors =====
Les comandes
$ docker-compose exec
==== Servei mariadb ====
$ docker-compose exec mariadb mysql -u alumne
Obre un terminal on es podran escriure comandes pròpies del client de MariaDB:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| paraules_db |
| test |
+--------------------+
3 rows in set (0.002 sec)
MariaDB [(none)]>
==== Servei myapp ===
$ docker-compose exec myapp /bin/bash
Aquesta comanda obre un terminal **bash** a dins del contenidor amb el directori de treball **/app**.
root@16d8a6cd179e:/app# ls
bin docker-compose.override.yml public tests
composer.json docker-compose.yml src translations
composer.lock migrations symfony.lock var
config phpunit.xml.dist templates vendor
root@16d8a6cd179e:/app#
===== Contingut del projecte =====
Ja estan tots els elements preparats per començar el desenvolupament.
==== Creació d'una entitat ====
root@16d8a6cd179e:/app# php bin/console make:entity
Class name of the entity to create or update (e.g. TinyGnome):
> Paraula
created: src/Entity/Paraula.php
created: src/Repository/ParaulaRepository.php
Entity generated! Now let's add some fields!
You can always add more fields later manually or by re-running this command.
New property name (press to stop adding fields):
> paraula
Field type (enter ? to see all types) [string]:
> string
Field length [255]:
> 60
Can this field be null in the database (nullable) (yes/no) [no]:
> no
updated: src/Entity/Paraula.php
Add another property? Enter the property name (or press to stop adding fields):
>
Success!
Next: When you're ready, create a migration with php bin/console make:migration
root@16d8a6cd179e:/app#
Després d'executar la comanda, s'hauran generat dues classes noves: l'entitat ($ php bin/console make:migration
I finalment es porta a terme aquesta migració:
$ php bin/console doctrine:migrations:migrate
=== S'ha creat la taula associada a l'entitat? ===
MariaDB [(none)]> connect paraules_db
Per observar quines taules té creades es pot fer servir la comanda:
MariaDB [paraules_db]> show tables;
+-----------------------------+
| Tables_in_paraules_db |
+-----------------------------+
| doctrine_migration_versions |
| messenger_messages |
| paraula |
+-----------------------------+
També es poden inserir dades:
insert into paraula(paraula) values ('Aneto'), ('Montserrat');
I comprovar que s'ha guardat tot a la base de dades.
select * from paraula;
Amb el resultat:
+----+------------+
| id | paraula |
+----+------------+
| 1 | Aneto |
| 2 | Montserrat |
+----+------------+
$ php bin/console make:controller IniciController
Després d'executar la comanda s'hauran generat dos arxius nous:
* El **controlador** a //src/Controller/IniciController.php//
* La **plantilla** a //templates/inici/index.html.twig//
Modifica el controlador perquè s'assembli al següent:
render('inici/index.html.twig', [
'data' => $data,
'hora' => $hora,
]);
}
}
Modifica la plantilla perquè sigui com la següent:
{% extends 'base.html.twig' %}
{% block title %}Hello IniciController!{% endblock %}
{% block body %}
Hello World!!!!
He nascut el dia {{ data }} a las {{ hora }}
{% endblock %}
Ara ja es pot carregar la pàgina al navegador amb la següent adreça: [[http://localhost:8000/inici|http://localhost:8000/inici]]