Skip to content

Commit 6690584

Browse files
committed
Merge pull request symfony#2480 from pvolok/assetic_tags
Add assetic DIC tags reference.
2 parents 0d055a2 + 0bc46cd commit 6690584

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed

reference/dic_tags.rst

+171
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@ the AsseticBundle has several tags that aren't listed here.
1616
+-----------------------------------+---------------------------------------------------------------------------+
1717
| Tag Name | Usage |
1818
+-----------------------------------+---------------------------------------------------------------------------+
19+
| `assetic.asset`_ | Register an asset to the current asset manager |
20+
+-----------------------------------+---------------------------------------------------------------------------+
21+
| `assetic.factory_worker`_ | Add a factory worker |
22+
+-----------------------------------+---------------------------------------------------------------------------+
23+
| `assetic.filter`_ | Register a filter |
24+
+-----------------------------------+---------------------------------------------------------------------------+
25+
| `assetic.formula_loader`_ | Add a formula loader to the current asset manager |
26+
+-----------------------------------+---------------------------------------------------------------------------+
27+
| `assetic.formula_resource`_ | Adds a resource to the current asset manager |
28+
+-----------------------------------+---------------------------------------------------------------------------+
29+
| `assetic.templating.php`_ | Remove this service if php templating is disabled |
30+
+-----------------------------------+---------------------------------------------------------------------------+
31+
| `assetic.templating.twig`_ | Remove this service if twig templating is disabled |
32+
+-----------------------------------+---------------------------------------------------------------------------+
1933
| `data_collector`_ | Create a class that collects custom data for the profiler |
2034
+-----------------------------------+---------------------------------------------------------------------------+
2135
| `form.type`_ | Create a custom form field type |
@@ -53,6 +67,163 @@ the AsseticBundle has several tags that aren't listed here.
5367
| `validator.initializer`_ | Register a service that initializes objects before validation |
5468
+-----------------------------------+---------------------------------------------------------------------------+
5569

70+
assetic.asset
71+
-------------
72+
73+
**Purpose**: Register an asset to the current asset manager
74+
75+
assetic.factory_worker
76+
----------------------
77+
78+
**Purpose**: Add a factory worker
79+
80+
Factory worker is a class implementing
81+
``Assetic\\Factory\\Worker\\WorkerInterface``. Its ``process($asset)``
82+
method is called for each asset after asset creation. You can modify an asset or
83+
even return a new one.
84+
85+
In order to add a new worker, first create a class::
86+
87+
use Assetic\Asset\AssetInterface;
88+
use Assetic\Factory\Worker\WorkerInterface;
89+
90+
class MyWorker implements WorkerInterface
91+
{
92+
public function process(AssetInterface $asset)
93+
{
94+
// ... change $asset or return a new one
95+
}
96+
97+
}
98+
99+
And then add register it as a tagged service:
100+
101+
.. configuration-block::
102+
103+
.. code-block:: yaml
104+
105+
services:
106+
acme.my_worker:
107+
class: MyWorker
108+
tags:
109+
- { name: assetic.factory_worker }
110+
111+
.. code-block:: xml
112+
113+
<service id="acme.my_worker" class="MyWorker>
114+
<tag name="assetic.factory_worker" />
115+
</service>
116+
117+
.. code-block:: php
118+
119+
$container
120+
->register('acme.my_worker', 'MyWorker')
121+
->addTag('assetic.factory_worker')
122+
;
123+
124+
assetic.filter
125+
--------------
126+
127+
**Purpose**: Register a filter
128+
129+
AsseticBundle uses this filter to register common filters. You can also use this
130+
tag to register your own filters.
131+
132+
First, you need to create a filter::
133+
134+
use Assetic\Asset\AssetInterface;
135+
use Assetic\Filter\FilterInterface;
136+
137+
class MyFilter implements FilterInterface
138+
{
139+
public function filterLoad(AssetInterface $asset)
140+
{
141+
$asset->setContent('alert("yo");' . $asset->getContent());
142+
}
143+
144+
public function filterDump(AssetInterface $asset)
145+
{
146+
// ...
147+
}
148+
}
149+
150+
Second, define a service:
151+
152+
.. configuration-block::
153+
154+
.. code-block:: yaml
155+
156+
services:
157+
acme.my_filter:
158+
class: MyFilter
159+
tags:
160+
- { name: assetic.filter, alias: my_filter }
161+
162+
.. code-block:: xml
163+
164+
<service id="acme.my_filter" class="MyFilter">
165+
<tag name="assetic.filter" alias="my_filter" />
166+
</service>
167+
168+
.. code-block:: php
169+
170+
$container
171+
->register('acme.my_filter', 'MyFilter')
172+
->addTag('assetic.filter', array('alias' => 'my_filter'))
173+
;
174+
175+
Finally, apply the filter:
176+
177+
.. code-block:: jinja
178+
179+
{% javascripts
180+
'@AcmeBaseBundle/Resources/public/js/global.js'
181+
filter='my_filter'
182+
%}
183+
<script src="{{ asset_url }}"></script>
184+
{% endjavascripts %}
185+
186+
You can also apply your filter via ``assetic.filters.my_filter.apply_to`` config
187+
option as it's described here: :doc:`/cookbook/assetic/apply_to_option`. In
188+
order to do that, you must define your filter service in separate xml config
189+
file and put this file's path to ``assetic.filters.my_filter.resource``.
190+
191+
assetic.formula_loader
192+
----------------------
193+
194+
**Purpose**: Add a formula loader to the current asset manager
195+
196+
Formula loader is a class implementing
197+
``Assetic\\Factory\Loader\\FormulaLoaderInterface`` interface. This class
198+
is responsible in loading assets from a particular kind of resources (for
199+
instance, twig template). Assetic ships loaders for php and twig templates.
200+
201+
An ``alias`` attribute defines a name of the loader.
202+
203+
assetic.formula_resource
204+
------------------------
205+
206+
**Purpose**: Adds a resource to the current asset manager
207+
208+
A resource is something formulae can be loaded from. For instance, twig
209+
templates are resources.
210+
211+
assetic.templating.php
212+
----------------------
213+
214+
**Purpose**: Remove this service if php templating is disabled
215+
216+
The tagged service will be removed from the container if
217+
``framework.templating.engines`` config section does not contain php.
218+
219+
assetic.templating.twig
220+
----------------------
221+
222+
**Purpose**: Remove this service if twig templating is disabled
223+
224+
The tagged service will be removed from the container if
225+
``framework.templating.engines`` config section does not contain twig.
226+
56227
data_collector
57228
--------------
58229

0 commit comments

Comments
 (0)