File tree 2 files changed +73
-0
lines changed
Magento2/Sniffs/Templates 2 files changed +73
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Rule: Do not use ` helpers ` in templates
2
+ ## Background
3
+ The use of helpers is in general discouraged. Consider using a ViewModel instead.
4
+
5
+ ## Reasoning
6
+ The use of helpers is in general discouraged therefore any ` $this->helper(<helper_class>) ` code used in PHTML templates should be refactored.
7
+
8
+ Consider using ViewModel instead.
9
+
10
+ ## How to fix
11
+
12
+ Typical example of a helper being used in a PHTML:
13
+ ``` html
14
+ <?php $_incl = $block->helper(<helper _class >)->...; ?>
15
+ ```
16
+
17
+ Once the ViewModel is created, call it in the PHTML as follow:
18
+
19
+ ``` html
20
+ <?php $viewModel = $block->getViewModel(); ?>
21
+ ```
22
+ or
23
+ ``` html
24
+ <?php $viewModel = $block->getData('viewModel'); ?>
25
+ ```
Original file line number Diff line number Diff line change
1
+ <?php
2
+ /**
3
+ * Copyright © Magento. All rights reserved.
4
+ * See COPYING.txt for license details.
5
+ */
6
+ namespace Magento2 \Sniffs \Templates ;
7
+
8
+ use PHP_CodeSniffer \Sniffs \Sniff ;
9
+ use PHP_CodeSniffer \Files \File ;
10
+
11
+ /**
12
+ * Detects possible usage of helper in templates.
13
+ */
14
+ class HelperInTemplateSniff implements Sniff
15
+ {
16
+ /**
17
+ * String representation of warning.
18
+ *
19
+ * @var string
20
+ */
21
+ protected $ warningMessage = 'Usage of helpers in templates is discouraged. ' ;
22
+
23
+ /**
24
+ * Warning violation code.
25
+ *
26
+ * @var string
27
+ */
28
+ protected $ warningCode = 'FoundThis ' ;
29
+
30
+ /**
31
+ * @inheritdoc
32
+ */
33
+ public function register ()
34
+ {
35
+ return [T_VARIABLE ];
36
+ }
37
+
38
+ /**
39
+ * @inheritdoc
40
+ */
41
+ public function process (File $ phpcsFile , $ stackPtr )
42
+ {
43
+ $ tokens = $ phpcsFile ->getTokens ();
44
+ if ($ tokens [$ stackPtr ]['content ' ] === 'helper( ' ) {
45
+ $ phpcsFile ->addWarning ($ this ->warningMessage , $ stackPtr , $ this ->warningCode );
46
+ }
47
+ }
48
+ }
You can’t perform that action at this time.
0 commit comments