From 871935d37ffa3d7ee8d47117c1cd265b96944adf Mon Sep 17 00:00:00 2001 From: Howriq Date: Tue, 9 Dec 2025 19:53:21 +0200 Subject: [PATCH 1/3] Docs chapter 3 Signed-off-by: Howriq --- docs/book/v1/chapter-1.md | 8 +- docs/book/v1/chapter-2.md | 21 +- docs/book/v1/chapter-3.md | 453 ++++++++++++++++++ .../v1/images/chapter-3/book-config-1.png | Bin 0 -> 14787 bytes .../v1/images/chapter-3/book-config-2.png | Bin 0 -> 7724 bytes .../v1/images/chapter-3/book-repository.png | Bin 0 -> 18087 bytes docs/book/v1/images/chapter-3/button.png | Bin 0 -> 6314 bytes .../v1/images/chapter-3/composer-fixtures.png | Bin 0 -> 7199 bytes .../v1/images/chapter-3/config-fixtures.png | Bin 0 -> 5842 bytes docs/book/v1/images/chapter-3/tables.png | Bin 0 -> 46627 bytes mkdocs.yml | 1 + 11 files changed, 479 insertions(+), 4 deletions(-) create mode 100644 docs/book/v1/chapter-3.md create mode 100644 docs/book/v1/images/chapter-3/book-config-1.png create mode 100644 docs/book/v1/images/chapter-3/book-config-2.png create mode 100644 docs/book/v1/images/chapter-3/book-repository.png create mode 100644 docs/book/v1/images/chapter-3/button.png create mode 100644 docs/book/v1/images/chapter-3/composer-fixtures.png create mode 100644 docs/book/v1/images/chapter-3/config-fixtures.png create mode 100644 docs/book/v1/images/chapter-3/tables.png diff --git a/docs/book/v1/chapter-1.md b/docs/book/v1/chapter-1.md index 66dcb07..2766d7f 100644 --- a/docs/book/v1/chapter-1.md +++ b/docs/book/v1/chapter-1.md @@ -165,7 +165,6 @@ private function getDoctrineConfig(): array Now that everything has been configured we only need to do one last thing, to create an executable for the Doctrine CLI. In our case we will create a `doctrine` file inside the application's `bin` directory: -![doctrine](images/chapter-1/doctrine.png) ```php #!/usr/bin/env php @@ -207,3 +206,10 @@ Options: -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ``` + +### Summary + +- [Modified] composer.json +- [Modified] config/autoload/local.php +- [Modified] src/App/src/ConfigProvider.php +- [+] bin/doctrine diff --git a/docs/book/v1/chapter-2.md b/docs/book/v1/chapter-2.md index a441360..00c81ca 100644 --- a/docs/book/v1/chapter-2.md +++ b/docs/book/v1/chapter-2.md @@ -136,7 +136,7 @@ The call should lead to a call that contains the following output: Now that we have set up the Doctrine Migrations, we shall now start working on our entities. We need to create a base for our entities so that they have the same starting point. -For that, we will add a new directory `src/App/src/Entiy` in which we will add an abstract class, `AbstractEntity.php`: +For that, we will add a new directory `src/App/src/Entity` in which we will add an abstract class, `AbstractEntity.php`: ```php + */ +public function getTitles(): array +{ + $qb = $this->getQueryBuilder() + ->select('book.id, book.title') + ->from(Book::class, 'book'); + + return $qb->getQuery()->getResult(); +} + +/** + * @return array + */ +public function getAuthors(): array +{ + $qb = $this->getQueryBuilder() + ->select('book.id, book.author') + ->from(Book::class, 'book'); + + return $qb->getQuery()->getResult(); +} +``` + +The functions listed above will **retrieve** the `title`/`author` along with the `ID` of the Book database row for reference. + +## Setting up the Route + +We will now work on setting up the route from our new module through which we will display our data. +For this tutorial our route will be `{{base_url}}/books`. + +In order to register this path we need to create a `RoutesDelegator.php` file in `src/Book/src`. + +```php +get('/books', [GetBooksHandler::class], 'books::list'); + + return $app; + } +} +``` +## Handling the Request + +Now that the route is exists, we need to create the class that will handle our request. +Create a new directory `src/Book/src/Handler` and create the file `GetBooksHandler.php`. + +```php +bookRepository->getTitles(); + $authors = $this->bookRepository->getAuthors(); + + return new HtmlResponse( + $this->template->render('page::books', [ + 'titles' => $titles, + 'authors' => $authors, + ]) + ); + } +} +``` + +The custom functions that we have created in the `BookRepository.php` retrieve our desired values and pass it to the `books` HTML template that is being rendered. +We will crate the HTML file in the next part of this chapter. + +## HTML Template for Book Listing + +The `books` HTML template is currently missing, we now need to create it under the following path: `src/Book/src/templates/page/books.html.twig`. + +```html +{% extends '@layout/default.html.twig' %} + +{% block title %}Books{% endblock %} + +{% block content %} +
+

Book Titles

+ + + + + + + + + {% for title in titles %} + + + + + {% endfor %} + +
Book IDTitle
{{ title.id }}{{ title.title }}
+ +

Book Authors

+ + + + + + + + + {% for author in authors %} + + + + + {% endfor %} + +
Book IDAuthor
{{ author.id }}{{ author.author }}
+
+{% endblock %} +``` + +## Registering our Changes + +Now that our route, handler, repository methods and view are ready, we need to **register them so the application can use them**. +In `src/Book/src/ConfigProvider.php` we need to add the following changes: + +![book-config-1](images/chapter-3/book-config-1.png) +![book-config-2](images/chapter-3/book-config-2.png) + +```php +public function __invoke(): array +{ + return [ + 'dependencies' => $this->getDependencies(), + 'doctrine' => $this->getDoctrineConfig(), + 'templates' => $this->getTemplates(), + ]; +} + +private function getDependencies(): array +{ + return [ + 'delegators' => [ + Application::class => [ + RoutesDelegator::class, + ], + ], + 'factories' => [ + GetBooksHandler::class => BookHandlerFactory::class, + BookRepository::class => BookRepositoryFactory::class, + ], + ]; +} + +/** +@return array{ + * paths: array{page: array{literal-string&non-falsy-string}} + * } + */ +private function getTemplates(): array +{ + return [ + 'paths' => [ + 'page' => [__DIR__ . '/../templates/page'], + ], + ]; +} +``` + +In Dotkernel (and Mezzio/Laminas in general), most classes cannot be created directly with new ClassName() because they require dependencies (such as the template engine or a repository). +To provide those dependencies, we create Factory classes. + +A factory’s only responsibility is to build an object with everything it needs. +For that, we have created two factories - one for our Handler and one for our Repository. + +`src/App/src/Factory/BookHandlerFactory.php`: + +```php +get(BookRepository::class); + $template = $container->get(TemplateRendererInterface::class); + + assert($repository instanceof BookRepository); + assert($template instanceof TemplateRendererInterface); + + return new GetBooksHandler($template, $repository); + } +} +``` + +`src/App/src/Factory/BookRepositoryFactory.php`: + +```php +get(EntityManager::class); + + $repository = $entityManager->getRepository(Book::class); + assert($repository instanceof BookRepository); + + return $repository; + } +} +``` + +All the changes are now registered. + +## Populating the Table + +In order to have values for us to display, we now have to populate our `books` table from our database with some values. +There are two options in this case: + +- Use Doctrine Fixtures +- Add entries manually from the Database Client. + +**We recommend using fixtures**, but if you choose the alternative approach, feel free to skip directly to the **final section** of this chapter. + +## Doctrine Fixtures + +Doctrine Fixtures are tools that let us preload sample data into the database. +They make it easy to populate entities automatically, so we can test and develop our application without adding data manually. + +Our first step is to add our required Doctrine packages to our `composer.json` file: + +![composer-fixtures](images/chapter-3/composer-fixtures.png) + +```text +"doctrine/data-fixtures": "^2.2", +"doctrine/doctrine-fixtures-bundle": "^4.3", +``` + +After importing our packages, we need to register the path for our Fixture files in `src/App/src/ConfigProvider.php`. + +![config-fixtures](images/chapter-3/config-fixtures.png) + +```php +'fixtures' => getcwd() . '/src/App/src/Fixture', +``` + +We now need to create our Fixture Loader in `src/App/src/Fixture/BookLoader.php`: + +```php +setTitle('A Game of Thrones'); + $book1->setAuthor('George Martin'); + $manager->persist($book1); + + $book2 = new Book(); + $book2->setTitle('The Lord of the Rings'); + $book2->setAuthor('J.R.R. Tolkien'); + $manager->persist($book2); + + $book3 = new Book(); + $book3->setTitle('Dune'); + $book3->setAuthor('Frank Herbert'); + $manager->persist($book3); + + $manager->flush(); + } +} +``` + +For our last step we only need to create an executable for our fixtures in `bin/doctrine-fixtures`: + +```php +#!/usr/bin/env php +get(EntityManager::class); +$config = $container->get('config'); + +// Get fixtures directory from config +$fixturesPath = $config['doctrine']['fixtures']; + +if (! is_dir($fixturesPath)) { + echo "Fixtures directory not found: {$fixturesPath}\n"; + exit(1); +} + +// Load fixtures +$loader = new Loader(); +$loader->loadFromDirectory($fixturesPath); + +// Execute fixtures +$purger = new ORMPurger(); +$executor = new ORMExecutor($entityManager, $purger); + +echo "Loading fixtures from: {$fixturesPath}\n"; + +$executor->execute($loader->getFixtures()); + +echo "Fixtures loaded successfully!\n"; +``` + +Now we can run: + +```shell +php bin/doctrine-fixtures +``` + +The output should be similar to this: + +```terminaloutput +Loading fixtures from: {{ your_path }} +Fixtures loaded successfully! +``` + +## Listing Result + +In order to see your changes either go to `{{base_url}}/books` in your browser or you can add for example a button in `src/App/templates/layout/default.html`. + +![button](images/chapter-3/button.png) + +```html +Books +``` + +We should now see a page similar to the following: + +![tables](images/chapter-3/tables.png) + +### Summary + +- [Modified] src/Book/src/Repository/BookRepository.php +- [+] src/Book/src/RoutesDelegator.php +- [+] src/Book/src/Handler/GetBooksHandler.php +- [+] src/Book/templates/page/books.html.twig +- [Modified] src/Book/src/ConfigProvider.php +- [+] src/App/src/Factory/BookHandlerFactory.php +- [+] src/App/src/Factory/BookRepositoryFactory.php + +Fixtures (Optional): + +- [Modified] composer.json +- [Modified] src/App/src/ConfigProvider.php +- [+] src/App/src/Fixture/BookLoader.php +- [+] bin/doctrine-fixtures +- [Modified] src/App/templates/layout/default.html.twig diff --git a/docs/book/v1/images/chapter-3/book-config-1.png b/docs/book/v1/images/chapter-3/book-config-1.png new file mode 100644 index 0000000000000000000000000000000000000000..71cb5be5e5870c8341901ea52557198d277c768b GIT binary patch literal 14787 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 I%Z}my3qs{T1poj5 literal 0 HcmV?d00001 diff --git a/docs/book/v1/images/chapter-3/book-config-2.png b/docs/book/v1/images/chapter-3/book-config-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ff2abb79109d51e84ed3bb712c699a43db5ee4 GIT binary patch literal 7724 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 Y*s-H;kKct;5+qdj6;%}q?izaiADEcwtpET3 literal 0 HcmV?d00001 diff --git a/docs/book/v1/images/chapter-3/button.png b/docs/book/v1/images/chapter-3/button.png new file mode 100644 index 0000000000000000000000000000000000000000..2c656008c2f57c572b699f040f0f334061dae30f GIT binary patch literal 6314 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 V-lNjgn66(7dOF71)tZl^{|AgrYzqJY literal 0 HcmV?d00001 diff --git a/docs/book/v1/images/chapter-3/composer-fixtures.png b/docs/book/v1/images/chapter-3/composer-fixtures.png new file mode 100644 index 0000000000000000000000000000000000000000..9deac8b9edddc8c63bb1a3b77f81f44f63dc34d7 GIT binary patch literal 7199 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 literal 0 HcmV?d00001 diff --git a/docs/book/v1/images/chapter-3/config-fixtures.png b/docs/book/v1/images/chapter-3/config-fixtures.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba253efab6f044a3a3bddaf912250748822569c GIT binary patch literal 5842 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 a+e4^bJ`E_q+!SNvWdl7U-EwXFi2njf?!aLH literal 0 HcmV?d00001 diff --git a/docs/book/v1/images/chapter-3/tables.png b/docs/book/v1/images/chapter-3/tables.png new file mode 100644 index 0000000000000000000000000000000000000000..76365354dc000266e5b86710a1ad7acd516c1142 GIT binary patch literal 46627 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

aava>1IDL_ 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
3+oJZ;jQm5VV0Ata8*mio-p!VdNx`LpG+lOYq-3 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 Date: Tue, 9 Dec 2025 20:01:31 +0200 Subject: [PATCH 2/3] remove local.php Signed-off-by: Howriq --- docs/book/v1/chapter-1.md | 1 - docs/book/v1/chapter-3.md | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/book/v1/chapter-1.md b/docs/book/v1/chapter-1.md index 2766d7f..0de7a2d 100644 --- a/docs/book/v1/chapter-1.md +++ b/docs/book/v1/chapter-1.md @@ -165,7 +165,6 @@ private function getDoctrineConfig(): array Now that everything has been configured we only need to do one last thing, to create an executable for the Doctrine CLI. In our case we will create a `doctrine` file inside the application's `bin` directory: - ```php #!/usr/bin/env php Date: Wed, 10 Dec 2025 12:39:20 +0200 Subject: [PATCH 3/3] pr requested changes Signed-off-by: Howriq --- docs/book/v1/chapter-3.md | 13 ++++++------- docs/book/v1/images/chapter-3/book-config-1.png | Bin 14787 -> 0 bytes docs/book/v1/images/chapter-3/book-config-2.png | Bin 7724 -> 0 bytes 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 docs/book/v1/images/chapter-3/book-config-1.png delete mode 100644 docs/book/v1/images/chapter-3/book-config-2.png diff --git a/docs/book/v1/chapter-3.md b/docs/book/v1/chapter-3.md index 82603a1..a8a6d26 100644 --- a/docs/book/v1/chapter-3.md +++ b/docs/book/v1/chapter-3.md @@ -74,7 +74,7 @@ class RoutesDelegator ## Handling the Request -Now that the route is exists, we need to create the class that will handle our request. +Now that the route exists, we need to create the class that will handle our request. Create a new directory `src/Book/src/Handler` and create the file `GetBooksHandler.php`. ```php @@ -117,9 +117,9 @@ class GetBooksHandler implements RequestHandlerInterface The custom functions that we have created in the `BookRepository.php` retrieve our desired values and pass it to the `books` HTML template that is being rendered. We will crate the HTML file in the next part of this chapter. -## HTML Template for Book Listing +## Twig Template for Book Listing -The `books` HTML template is currently missing, we now need to create it under the following path: `src/Book/src/templates/page/books.html.twig`. +The `books` template is currently missing, we now need to create it under the following path: `src/Book/src/templates/page/books.html.twig`. ```html {% extends '@layout/default.html.twig' %} @@ -172,8 +172,7 @@ The `books` HTML template is currently missing, we now need to create it under t Now that our route, handler, repository methods and view are ready, we need to **register them so the application can use them**. In `src/Book/src/ConfigProvider.php` we need to add the following changes: -![book-config-1](images/chapter-3/book-config-1.png) -![book-config-2](images/chapter-3/book-config-2.png) +![book-config](images/chapter-3/book-config.png) ```php public function __invoke(): array @@ -201,7 +200,7 @@ private function getDependencies(): array } /** -@return array{ + * @return array{ * paths: array{page: array{literal-string&non-falsy-string}} * } */ @@ -304,7 +303,7 @@ There are two options in this case: - Use Doctrine Fixtures - Add entries manually from the Database Client. -**We recommend using fixtures**, but if you choose the alternative approach, feel free to skip directly to the **final section** of this chapter. +**We recommend using fixtures**, but if you choose the alternative approach, feel free to skip directly to the [final](#listing-result) section of this chapter. ## Doctrine Fixtures diff --git a/docs/book/v1/images/chapter-3/book-config-1.png b/docs/book/v1/images/chapter-3/book-config-1.png deleted file mode 100644 index 71cb5be5e5870c8341901ea52557198d277c768b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14787 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 I%Z}my3qs{T1poj5 diff --git a/docs/book/v1/images/chapter-3/book-config-2.png b/docs/book/v1/images/chapter-3/book-config-2.png deleted file mode 100644 index f2ff2abb79109d51e84ed3bb712c699a43db5ee4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7724 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