"value":"\n <p>I've often heard and advocated for not \"putting logic\" in template files and having a separation of concerns.<\/p>\n\n<p>The templates should be as simple to read and change as possible, and any complicated logic should be moved elsewhere.<\/p>\n\n<p>There can be presentational logic - such as a simple if condition to determine if a value should be shown or looping over a list of items, but business logic should be within custom code - ideally within Service, Action or Command classes - and injected into the templates.<\/p>\n\n<p>As well as making the templates simpler and cleaner, this logic can be tested separately with automated tests to ensure it works as expected. If the logic is within a template, this can be done for some things using Functional tests, such as whether some text appears on a page, but testing whether it appears in a certain order, for example, is much harder. This is best done within kernel or unit tests.<\/p>\n\n<p>As well as being more testable, extracting the logic from a template makes it more reusable. You can use a service from multiple places within your website without duplicating it, making your website code smaller and easier to maintain.<\/p>\n\n ",
"format":"full_html",
"processed":"\n <p>I've often heard and advocated for not \"putting logic\" in template files and having a separation of concerns.<\/p>\n\n<p>The templates should be as simple to read and change as possible, and any complicated logic should be moved elsewhere.<\/p>\n\n<p>There can be presentational logic - such as a simple if condition to determine if a value should be shown or looping over a list of items, but business logic should be within custom code - ideally within Service, Action or Command classes - and injected into the templates.<\/p>\n\n<p>As well as making the templates simpler and cleaner, this logic can be tested separately with automated tests to ensure it works as expected. If the logic is within a template, this can be done for some things using Functional tests, such as whether some text appears on a page, but testing whether it appears in a certain order, for example, is much harder. This is best done within kernel or unit tests.<\/p>\n\n<p>As well as being more testable, extracting the logic from a template makes it more reusable. You can use a service from multiple places within your website without duplicating it, making your website code smaller and easier to maintain.<\/p>\n\n ",