@@ -85,8 +85,7 @@ Bundle Directory Structure
8585
8686The directory structure of a bundle is meant to help to keep code consistent
8787between 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:
9089
9190``Controller/ ``
9291 Contains the controllers of the bundle (e.g. ``RandomController.php ``).
@@ -118,6 +117,35 @@ database, create and validate forms, create translations for your application,
118117write tests and much more. Each of these has their own place and role within
119118the bundle.
120119
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+ ``getPublicPath() `` 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 getPublicPath(): string
140+ {
141+ return 'public/';
142+ }
143+ }
144+
145+ .. versionadded :: 4.4
146+
147+ The ``getPublicPath() `` method was introduced in Symfony 4.4.
148+
121149Learn more
122150----------
123151
0 commit comments