-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[DX] ADR usage #8153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DX] ADR usage #8153
Changes from 1 commit
c8050b1
0d0d4cc
7359837
885e696
220021e
1fda263
11c77c7
d21feb2
a449220
6d1ed62
a81b625
8444e98
a93fa6c
97bcbac
72c2c74
666a89f
c8625fb
0d2022a
582f4bf
a237312
cd46501
24416f5
dc6ddc6
f1aad20
16c8472
eca9a0a
aa0a207
551aed6
3dacc68
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
Updated the syntax errors and unused use statements.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,14 +4,15 @@ single: Action Domain Responder approach | |
How to implement the ADR pattern | ||
================================ | ||
|
||
In Symfony, you're used to implement the MVC pattern and extending the default 'Controller' | ||
class, since the 3.3 update, Symfony is capable of using natively the ADR approach. | ||
In Symfony, you're used to implement the MVC pattern and extending the default :class:`Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller` | ||
class. | ||
Since the 3.3 update, Symfony is capable of using natively the ADR approach. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe it is worth it to add a link to https://github.com/pmjones/adr |
||
|
||
Updating your internal logic | ||
---------------------------- | ||
Updating your configuration | ||
--------------------------- | ||
|
||
As you saw from earlier example, you must update the services.yml file in order to | ||
use the latest features of the DependencyInjection component, this way, here's the updates :: | ||
As the framework evolve, you must update the services.yml file in order to | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "evolves" |
||
use the latest features of the DependencyInjection component, this way, here's the updates:: | ||
|
||
# ... | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can be removed? |
||
|
||
|
@@ -26,14 +27,13 @@ use the latest features of the DependencyInjection component, this way, here's t | |
resource: '../../src/AppBundle/Action/' | ||
public: true | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This behavior has been modified for 3.3, now all the services tagged with |
||
|
||
Once the file is updated, delete your Controller folder and create an Action class using the ADR principles, i.e :: | ||
Once the file is updated, delete your Controller folder and create an Action class using the ADR principles, i.e:: | ||
|
||
<?php | ||
|
||
namespace AppBundle\Action; | ||
|
||
use Twig\Environment; | ||
use Symfony\Component\Templating\EngineInterface; | ||
|
||
final class HelloAction | ||
{ | ||
|
@@ -53,10 +53,10 @@ Once the file is updated, delete your Controller folder and create an Action cla | |
.. tip:: | ||
|
||
As described in the DependencyInjection doc, you must use the __construct() injection | ||
approach, this way, your class is easier to update and keep in sync with the framework internal | ||
approach, this way, your class is easier to update and keep in sync with any framework internal | ||
services. | ||
|
||
By default, we define the class with the final keyword because this class shouldn't been extended, | ||
By default, we define the class with the final keyword because this class shouldn't be extended, | ||
the logic is pretty simple to understand as you understand the ADR pattern, in fact, the 'Action' | ||
is linked to a single request and his dependencies are linked to this precise Action. | ||
|
||
|
@@ -66,7 +66,7 @@ is linked to a single request and his dependencies are linked to this precise Ac | |
is faster to return and easier to keep out of the framework logic. | ||
|
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Extra blank line. |
||
Once this is done, you can define the routes like before using multiples approach : | ||
Once this is done, you can define the routes like before using multiples approach: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "multiples approach" => "multiple approaches" |
||
|
||
.. configuration-block:: | ||
|
||
|
@@ -158,7 +158,7 @@ using this approach, a simple update is recommended :: | |
} | ||
} | ||
|
||
This way, you can easily access to parameters :: | ||
This way, you can easily access to parameters:: | ||
|
||
<?php | ||
|
||
|
@@ -174,7 +174,7 @@ This way, you can easily access to parameters :: | |
{ | ||
$data = $this->requestStack->getCurrentRequest()->get('id'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
return new Response($this->twig->render('default/index.html.twig')); | ||
return new Response($this->twig->render('default/index.html.twig', ['data' => $data])); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We still use the long syntax in the core and in the docs to ease merging olders branches. |
||
} | ||
} | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Symfony has never promoted the MVC pattern (at least, not since version 2). Instead, we are presenting Symfony as being a Request/Response framework where the controller converts a Request to a Response via a Controller.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, my apologies for this words, the meaning of my "text" was to clearly say that a lot of developers use Symfony with MVC and that using this pattern is way more used than just transforming a Request into Response (which is handled by the framework in a certain way, the actual transformation occurs in the controller).