@@ -85,8 +85,7 @@ Bundle Directory Structure
85
85
86
86
The directory structure of a bundle is meant to help to keep code consistent
87
87
between all Symfony bundles. It follows a set of conventions, but is flexible
88
- to be adjusted if needed. Take a look at AcmeDemoBundle, as it contains some
89
- of the most common elements of a bundle:
88
+ to be adjusted if needed:
90
89
91
90
``Controller/ ``
92
91
Contains the controllers of the bundle (e.g. ``RandomController.php ``).
@@ -118,6 +117,35 @@ database, create and validate forms, create translations for your application,
118
117
write tests and much more. Each of these has their own place and role within
119
118
the bundle.
120
119
120
+ Overridding the Bundle Directory Structure
121
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122
+
123
+ Some of the bundle directories are conventions that can be overridden if needed.
124
+ For example, the **public directory **, which by default is located at
125
+ ``<your-bundle>/Resources/public/ ``, can be changed by defining the
126
+ ``getPublicDir() `` method in the bundle class::
127
+
128
+ // src/Acme/TestBundle/AcmeTestBundle.php
129
+ namespace App\Acme\TestBundle;
130
+
131
+ use Symfony\Component\HttpKernel\Bundle\Bundle;
132
+
133
+ class AcmeTestBundle extends Bundle
134
+ {
135
+ // ...
136
+
137
+ // the returned value must be relative to the bundle root directory
138
+ // (public dir is now <your-bundle>/public/ instead of <your-bundle>/Resources/public/)
139
+ public function getPublicDir(): string
140
+ {
141
+ return 'public/';
142
+ }
143
+ }
144
+
145
+ .. versionadded :: 4.4
146
+
147
+ The ``getPublicDir() `` method was introduced in Symfony 4.4.
148
+
121
149
Learn more
122
150
----------
123
151
0 commit comments