Congratulations!

[Valid Atom 1.0] This is a valid Atom 1.0 feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: https://feeds.feedburner.com/strangebuzz/en

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <feed xmlns="http://www.w3.org/2005/Atom">
  3.    <title>The Strangebuzz PHP/Symfony blog.</title>
  4.    <subtitle>Articles for the "" tag.</subtitle>
  5.    <updated>2024-03-29T11:49:11+01:00</updated>
  6.    <author>
  7.        <name>COil</name>
  8.        <email>coil@strangebuzz.com</email>
  9.    </author>
  10.    <link href="https://www.strangebuzz.com/en/blog/rss.xml" rel="self" />
  11.    <id>https://www.strangebuzz.com/en/blog/rss.xml</id>
  12.    <icon>https://www.strangebuzz.com/img/strangebuzz_132.jpg?6.4.2</icon>
  13.    <logo>https://www.strangebuzz.com/img/strangebuzz_1024.jpg?6.4.2</logo>
  14.    <rights> © 2024 Strangebuzz</rights>
  15.                            <entry>
  16.            <title>Installing and using php-cs-fixer</title>
  17.            <link href="https://www.strangebuzz.com/en/blog/installing-and-using-php-cs-fixer" />
  18.            <id>https://www.strangebuzz.com/en/blog/installing-and-using-php-cs-fixer</id>
  19.            <published>2024-01-15T00:00:00+01:00</published>
  20.            <updated>2024-01-15T00:00:00+01:00</updated>
  21.            <author>
  22.                <name>COil</name>
  23.                <email>coil@strangebuzz.com</email>
  24.            </author>
  25.            <summary type="html">In this post, we see different methods to install and use php-cs-fixer. We see that it&#039;s not as obvious as it seems.
  26. </summary>
  27.        </entry>
  28.                            <entry>
  29.            <title>Introducing the MicroSymfony application template</title>
  30.            <link href="https://www.strangebuzz.com/en/blog/introducing-the-microsymfony-application-template" />
  31.            <id>https://www.strangebuzz.com/en/blog/introducing-the-microsymfony-application-template</id>
  32.            <published>2023-08-21T00:00:00+02:00</published>
  33.            <updated>2023-08-21T00:00:00+02:00</updated>
  34.            <author>
  35.                <name>COil</name>
  36.                <email>coil@strangebuzz.com</email>
  37.            </author>
  38.            <summary type="html">In this post, I introduce the MicroSymfony application template, which results from several ideas I already discussed in a previous post:  &quot;Initializing your Symfony project with solid foundations&quot;.
  39. </summary>
  40.        </entry>
  41.                            <entry>
  42.            <title>Using Symfony forms with PHP typed properties
  43. </title>
  44.            <link href="https://www.strangebuzz.com/en/blog/using-symfony-forms-with-php-typed-properties" />
  45.            <id>https://www.strangebuzz.com/en/blog/using-symfony-forms-with-php-typed-properties</id>
  46.            <published>2023-05-20T00:00:00+02:00</published>
  47.            <updated>2023-05-20T00:00:00+02:00</updated>
  48.            <author>
  49.                <name>COil</name>
  50.                <email>coil@strangebuzz.com</email>
  51.            </author>
  52.            <summary type="html">In this post, we see how to use Symfony forms with PHP typed properties and non-nullable one. Let&#039;s see the problems that can occur and how to handle them.
  53. </summary>
  54.        </entry>
  55.                            <entry>
  56.            <title>Using PHP enumerations with your Symfony workflows</title>
  57.            <link href="https://www.strangebuzz.com/en/blog/using-php-enumerations-with-your-symfony-workflows" />
  58.            <id>https://www.strangebuzz.com/en/blog/using-php-enumerations-with-your-symfony-workflows</id>
  59.            <published>2023-04-08T00:00:00+02:00</published>
  60.            <updated>2023-04-08T00:00:00+02:00</updated>
  61.            <author>
  62.                <name>COil</name>
  63.                <email>coil@strangebuzz.com</email>
  64.            </author>
  65.            <summary type="html">This post shows how to use PHP enumerations with your Symfony workflows.  Let&#039;s take advantage of this new PHP feature to clean up and improve all the workflow-related code.
  66. </summary>
  67.        </entry>
  68.                            <entry>
  69.            <title>Replacing manual API endpoints with API Platform 3 in a Symfony application</title>
  70.            <link href="https://www.strangebuzz.com/en/blog/replacing-manual-api-endpoints-with-api-platform-3-in-a-symfony-application" />
  71.            <id>https://www.strangebuzz.com/en/blog/replacing-manual-api-endpoints-with-api-platform-3-in-a-symfony-application</id>
  72.            <published>2022-11-19T00:00:00+01:00</published>
  73.            <updated>2022-12-08T00:00:00+01:00</updated>
  74.            <author>
  75.                <name>COil</name>
  76.                <email>coil@strangebuzz.com</email>
  77.            </author>
  78.            <summary type="html">In this post, we rewrite a previous article that used API Platform 2.6 to use the new major version of API Platform 3.  
  79. </summary>
  80.        </entry>
  81.                            <entry>
  82.            <title>Validating your data fixtures with the Alice Symfony bundle</title>
  83.            <link href="https://www.strangebuzz.com/en/blog/validating-your-data-fixtures-with-the-alice-symfony-bundle" />
  84.            <id>https://www.strangebuzz.com/en/blog/validating-your-data-fixtures-with-the-alice-symfony-bundle</id>
  85.            <published>2022-10-15T00:00:00+02:00</published>
  86.            <updated>2022-10-15T00:00:00+02:00</updated>
  87.            <author>
  88.                <name>COil</name>
  89.                <email>coil@strangebuzz.com</email>
  90.            </author>
  91.            <summary type="html">This post shows how to validate data fixtures with the Alice Symfony bundle before inserting them into the database. It&#039;s essential, as you could have invalid data otherwise in the development or test environments.
  92. </summary>
  93.        </entry>
  94.                            <entry>
  95.            <title>Using PHP 8.1 enumerations in a Symfony project</title>
  96.            <link href="https://www.strangebuzz.com/en/blog/using-php-8-1-enumerations-in-a-symfony-project" />
  97.            <id>https://www.strangebuzz.com/en/blog/using-php-8-1-enumerations-in-a-symfony-project</id>
  98.            <published>2022-09-03T00:00:00+02:00</published>
  99.            <updated>2022-09-07T00:00:00+02:00</updated>
  100.            <author>
  101.                <name>COil</name>
  102.                <email>coil@strangebuzz.com</email>
  103.            </author>
  104.            <summary type="html">This post shows how to use PHP 8.1 enumerations in a Symfony project. We review the different steps to use this new PHP 8.1 useful feature in different parts of a Symfony application.
  105. </summary>
  106.        </entry>
  107.                            <entry>
  108.            <title>Upgrading PHP with the ondrej/php repository on an Ubuntu server</title>
  109.            <link href="https://www.strangebuzz.com/en/blog/upgrading-php-with-the-ondrej-php-repository-on-an-ubuntu-server" />
  110.            <id>https://www.strangebuzz.com/en/blog/upgrading-php-with-the-ondrej-php-repository-on-an-ubuntu-server</id>
  111.            <published>2022-07-25T00:00:00+02:00</published>
  112.            <updated>2022-07-25T00:00:00+02:00</updated>
  113.            <author>
  114.                <name>COil</name>
  115.                <email>coil@strangebuzz.com</email>
  116.            </author>
  117.            <summary type="html">This post shows how to upgrade PHP with the ondrej/php repository on an Ubuntu server, step by step, to avoid forgetting something.
  118. </summary>
  119.        </entry>
  120.                            <entry>
  121.            <title>Initializing your Symfony project with solid foundations</title>
  122.            <link href="https://www.strangebuzz.com/en/blog/initializing-your-symfony-project-with-solid-foundations" />
  123.            <id>https://www.strangebuzz.com/en/blog/initializing-your-symfony-project-with-solid-foundations</id>
  124.            <published>2022-06-11T00:00:00+02:00</published>
  125.            <updated>2022-06-12T00:00:00+02:00</updated>
  126.            <author>
  127.                <name>COil</name>
  128.                <email>coil@strangebuzz.com</email>
  129.            </author>
  130.            <summary type="html">This post shows how to initialize a Symfony project with solid foundations. I give several bits of advice about this crucial step that determines how your project will evolve in the long run; will it stay maintainable and fun to work with? Or will it become the legacy project everyone tries to avoid?
  131. </summary>
  132.        </entry>
  133.                            <entry>
  134.            <title>Simple API mocking with the Symfony HTTP client</title>
  135.            <link href="https://www.strangebuzz.com/en/blog/simple-api-mocking-with-the-symfony-http-client" />
  136.            <id>https://www.strangebuzz.com/en/blog/simple-api-mocking-with-the-symfony-http-client</id>
  137.            <published>2022-02-12T00:00:00+01:00</published>
  138.            <updated>2022-02-12T00:00:00+01:00</updated>
  139.            <author>
  140.                <name>COil</name>
  141.                <email>coil@strangebuzz.com</email>
  142.            </author>
  143.            <summary type="html">In this post, we see a simple solution to mock API calls with the Symfony HTTP client, declare a scoped HTTP client and test it with or without mock.
  144. </summary>
  145.        </entry>
  146.                            <entry>
  147.            <title>Organizing your Symfony project tests</title>
  148.            <link href="https://www.strangebuzz.com/en/blog/organizing-your-symfony-project-tests" />
  149.            <id>https://www.strangebuzz.com/en/blog/organizing-your-symfony-project-tests</id>
  150.            <published>2021-12-22T00:00:00+01:00</published>
  151.            <updated>2021-12-22T00:00:00+01:00</updated>
  152.            <author>
  153.                <name>COil</name>
  154.                <email>coil@strangebuzz.com</email>
  155.            </author>
  156.            <summary type="html">In this post, we see how to organize your Symfony project tests. We check all the available test types and create consistent and robust test suites.
  157. </summary>
  158.        </entry>
  159.                            <entry>
  160.            <title>Creating custom PHPStan rules for your Symfony project</title>
  161.            <link href="https://www.strangebuzz.com/en/blog/creating-custom-phpstan-rules-for-your-symfony-project" />
  162.            <id>https://www.strangebuzz.com/en/blog/creating-custom-phpstan-rules-for-your-symfony-project</id>
  163.            <published>2021-10-28T00:00:00+02:00</published>
  164.            <updated>2021-10-28T00:00:00+02:00</updated>
  165.            <author>
  166.                <name>COil</name>
  167.                <email>coil@strangebuzz.com</email>
  168.            </author>
  169.            <summary type="html">In this post, we see how to create custom PHPStan rules for a Symfony project. We will check Symfony best practices but also more specific rules.
  170. </summary>
  171.        </entry>
  172.                            <entry>
  173.            <title>The PHP exceptions&#039; cheat sheet</title>
  174.            <link href="https://www.strangebuzz.com/en/blog/the-php-exceptions-cheatsheet" />
  175.            <id>https://www.strangebuzz.com/en/blog/the-php-exceptions-cheatsheet</id>
  176.            <published>2021-10-02T00:00:00+02:00</published>
  177.            <updated>2021-10-02T00:00:00+02:00</updated>
  178.            <author>
  179.                <name>COil</name>
  180.                <email>coil@strangebuzz.com</email>
  181.            </author>
  182.            <summary type="html">This post is different from what I use to do. It will be a reference, a &quot;cheat sheet&quot; mentioning all available exceptions with PHP.
  183. </summary>
  184.        </entry>
  185.                            <entry>
  186.            <title>Implementing a user workflow with Symfony and EasyAdmin3</title>
  187.            <link href="https://www.strangebuzz.com/en/blog/implementing-a-user-workflow-with-symfony-and-easyadmin3" />
  188.            <id>https://www.strangebuzz.com/en/blog/implementing-a-user-workflow-with-symfony-and-easyadmin3</id>
  189.            <published>2021-06-30T00:00:00+02:00</published>
  190.            <updated>2021-06-30T00:00:00+02:00</updated>
  191.            <author>
  192.                <name>COil</name>
  193.                <email>coil@strangebuzz.com</email>
  194.            </author>
  195.            <summary type="html">In this post, we will see how to implement a user workflow with Symfony and EasyAdmin3. We will use the Symfony workflow component to handle the users&#039; state and we will use EasyAdmin3 to modify this state with custom actions.
  196. </summary>
  197.        </entry>
  198.                            <entry>
  199.            <title>End-to-end testing with Symfony and Panther</title>
  200.            <link href="https://www.strangebuzz.com/en/blog/end-to-end-testing-with-symfony-and-panther" />
  201.            <id>https://www.strangebuzz.com/en/blog/end-to-end-testing-with-symfony-and-panther</id>
  202.            <published>2021-04-04T00:00:00+02:00</published>
  203.            <updated>2021-04-04T00:00:00+02:00</updated>
  204.            <author>
  205.                <name>COil</name>
  206.                <email>coil@strangebuzz.com</email>
  207.            </author>
  208.            <summary type="html">In this post, we will see how to create an end-to-end test scenario using Symfony, Panther and Vue.js with a concrete example.
  209. </summary>
  210.        </entry>
  211.                            <entry>
  212.            <title>Securing an API with JWT and API Platform</title>
  213.            <link href="https://www.strangebuzz.com/en/blog/securing-an-api-with-jwt-and-api-platform" />
  214.            <id>https://www.strangebuzz.com/en/blog/securing-an-api-with-jwt-and-api-platform</id>
  215.            <published>2020-12-31T00:00:00+01:00</published>
  216.            <updated>2020-12-31T00:00:00+01:00</updated>
  217.            <author>
  218.                <name>COil</name>
  219.                <email>coil@strangebuzz.com</email>
  220.            </author>
  221.            <summary type="html">In this post, we will see how to secure an API with JWT and API Platform. We will generate JWT security tokens thanks to the lexik/jwt-authentication-bundle, and we will take advantage of the new property security parameter introduced in API Platform 2.6.
  222. </summary>
  223.        </entry>
  224.                            <entry>
  225.            <title>Replacing manual API endpoints by API Platform in a Symfony application</title>
  226.            <link href="https://www.strangebuzz.com/en/blog/replacing-manual-api-endpoints-by-api-platform-in-a-symfony-application" />
  227.            <id>https://www.strangebuzz.com/en/blog/replacing-manual-api-endpoints-by-api-platform-in-a-symfony-application</id>
  228.            <published>2020-12-03T00:00:00+01:00</published>
  229.            <updated>2021-09-03T00:00:00+02:00</updated>
  230.            <author>
  231.                <name>COil</name>
  232.                <email>coil@strangebuzz.com</email>
  233.            </author>
  234.            <summary type="html">In this post, we will see how API Platform can help us to document and migrate manual endpoints in a Symfony application. We will see concrete examples related to this blog application.
  235. </summary>
  236.        </entry>
  237.                            <entry>
  238.            <title>Using an expression for disabling the security of a Symfony administration in the dev environment
  239. </title>
  240.            <link href="https://www.strangebuzz.com/en/blog/using-an-expression-for-disabling-the-security-of-a-symfony-administration-in-the-dev-environment" />
  241.            <id>https://www.strangebuzz.com/en/blog/using-an-expression-for-disabling-the-security-of-a-symfony-administration-in-the-dev-environment</id>
  242.            <published>2020-10-15T00:00:00+02:00</published>
  243.            <updated>2020-10-15T00:00:00+02:00</updated>
  244.            <author>
  245.                <name>COil</name>
  246.                <email>coil@strangebuzz.com</email>
  247.            </author>
  248.            <summary type="html">In this post, we will see how to use an expression for disabling the security of a Symfony administration in the dev environment. We won&#039;t use an IP based test like the documentation explains, but we will use the application&#039;s environment instead.
  249. </summary>
  250.        </entry>
  251.                            <entry>
  252.            <title>Adding a custom data collector in the Symfony debug bar</title>
  253.            <link href="https://www.strangebuzz.com/en/blog/adding-a-custom-data-collector-in-the-symfony-debug-bar" />
  254.            <id>https://www.strangebuzz.com/en/blog/adding-a-custom-data-collector-in-the-symfony-debug-bar</id>
  255.            <published>2020-07-23T00:00:00+02:00</published>
  256.            <updated>2020-07-23T00:00:00+02:00</updated>
  257.            <author>
  258.                <name>COil</name>
  259.                <email>coil@strangebuzz.com</email>
  260.            </author>
  261.            <summary type="html">In this post, we will see how to add a custom data collector in the Symfony debug bar. The debug bar, also called profiler, is one of the most useful components as it is of great help when developing. We will see a concrete case to help us improving the SEO of a website by displaying meta-information about the current page.
  262. </summary>
  263.        </entry>
  264.                            <entry>
  265.            <title>Step by step debugging with Xdebug, Symfony and PHPStorm</title>
  266.            <link href="https://www.strangebuzz.com/en/blog/step-by-step-debugging-with-xdebug-symfony-and-phpstorm" />
  267.            <id>https://www.strangebuzz.com/en/blog/step-by-step-debugging-with-xdebug-symfony-and-phpstorm</id>
  268.            <published>2020-06-21T00:00:00+02:00</published>
  269.            <updated>2020-10-18T00:00:00+02:00</updated>
  270.            <author>
  271.                <name>COil</name>
  272.                <email>coil@strangebuzz.com</email>
  273.            </author>
  274.            <summary type="html">In this post, we will see how to do step by step debugging with Xdebug, Symfony and PHPStorm. We will do a basic example where we will stop the execution of the Symfony code just before rendering a template to check the data passed to it.
  275. </summary>
  276.        </entry>
  277.                            <entry>
  278.            <title>Introducing CW: a cache watcher for Symfony
  279. </title>
  280.            <link href="https://www.strangebuzz.com/en/blog/introducing-cw-a-cache-watcher-for-symfony" />
  281.            <id>https://www.strangebuzz.com/en/blog/introducing-cw-a-cache-watcher-for-symfony</id>
  282.            <published>2020-05-15T00:00:00+02:00</published>
  283.            <updated>2020-12-05T00:00:00+01:00</updated>
  284.            <author>
  285.                <name>COil</name>
  286.                <email>coil@strangebuzz.com</email>
  287.            </author>
  288.            <summary type="html">In this post, I will introduce you to Cw which is an acronym for &quot;Cache Watcher&quot;. Cw is a small Go (Golang) program that watches your Symfony files and warms your cache when needed, so you don&#039;t have to wait when refreshing your browser.
  289. </summary>
  290.        </entry>
  291.                            <entry>
  292.            <title>Setting a CI/CD workflow for a Symfony project thanks to the GitHub actions</title>
  293.            <link href="https://www.strangebuzz.com/en/blog/setting-a-ci-cd-workflow-for-a-symfony-project-thanks-to-the-github-actions" />
  294.            <id>https://www.strangebuzz.com/en/blog/setting-a-ci-cd-workflow-for-a-symfony-project-thanks-to-the-github-actions</id>
  295.            <published>2020-03-28T00:00:00+01:00</published>
  296.            <updated>2020-03-28T00:00:00+01:00</updated>
  297.            <author>
  298.                <name>COil</name>
  299.                <email>coil@strangebuzz.com</email>
  300.            </author>
  301.            <summary type="html">In this post, we will see how to set up a CI/CD workflow for a Symfony project thanks to the GitHub actions. It will cover from configuring PHP on the runner host to launching the unit and functional tests of the Symfony application.
  302. </summary>
  303.        </entry>
  304.                            <entry>
  305.            <title>Auto-configuration of Doctrine repositories as services</title>
  306.            <link href="https://www.strangebuzz.com/en/blog/auto-configuration-of-doctrine-repositories-as-services" />
  307.            <id>https://www.strangebuzz.com/en/blog/auto-configuration-of-doctrine-repositories-as-services</id>
  308.            <published>2020-02-19T00:00:00+01:00</published>
  309.            <updated>2020-03-14T00:00:00+01:00</updated>
  310.            <author>
  311.                <name>COil</name>
  312.                <email>coil@strangebuzz.com</email>
  313.            </author>
  314.            <summary type="html">In this post, we will see how to use Doctrine repositories as services without adding additional configuration to the services.yaml file.
  315. </summary>
  316.        </entry>
  317.                            <entry>
  318.            <title>On using the good old Symfony BaseController</title>
  319.            <link href="https://www.strangebuzz.com/en/blog/on-using-the-good-old-symfony-basecontroller" />
  320.            <id>https://www.strangebuzz.com/en/blog/on-using-the-good-old-symfony-basecontroller</id>
  321.            <published>2019-12-31T00:00:00+01:00</published>
  322.            <updated>2019-12-31T00:00:00+01:00</updated>
  323.            <author>
  324.                <name>COil</name>
  325.                <email>coil@strangebuzz.com</email>
  326.            </author>
  327.            <summary type="html">In this post, we will see how to use the Symfony AbstractController that was introduced in Symfony 3.3/4.1. We will review what we used to do before and the evolutions that were done from symfony 1 to Symfony 5, especially how services were declared and used. Eventually, we will try to understand why this new &quot;Base controller&quot; was introduced.
  328. </summary>
  329.        </entry>
  330.                            <entry>
  331.            <title>What are your Symfony best practices?</title>
  332.            <link href="https://www.strangebuzz.com/en/blog/what-are-your-symfony-best-practices" />
  333.            <id>https://www.strangebuzz.com/en/blog/what-are-your-symfony-best-practices</id>
  334.            <published>2019-12-22T00:00:00+01:00</published>
  335.            <updated>2021-12-24T00:00:00+01:00</updated>
  336.            <author>
  337.                <name>COil</name>
  338.                <email>coil@strangebuzz.com</email>
  339.            </author>
  340.            <summary type="html">In this post, we will check all the Symfony best practices listed in the official documentation. For each one, I will say if I agree with it or not and why.
  341. </summary>
  342.        </entry>
  343.                            <entry>
  344.            <title>Implementing a honeypot in a Symfony form</title>
  345.            <link href="https://www.strangebuzz.com/en/blog/implementing-a-honeypot-in-a-symfony-form" />
  346.            <id>https://www.strangebuzz.com/en/blog/implementing-a-honeypot-in-a-symfony-form</id>
  347.            <published>2019-12-07T00:00:00+01:00</published>
  348.            <updated>2019-12-07T00:00:00+01:00</updated>
  349.            <author>
  350.                <name>COil</name>
  351.                <email>coil@strangebuzz.com</email>
  352.            </author>
  353.            <summary type="html">In this post, we will see how to implement a simple honeypot in a Symfony form to avoid spam. We will try it on a newsletter form with a unique email field. We&#039;ll also log what is blocked by the trap to check if it works correctly.
  354. </summary>
  355.        </entry>
  356.                            <entry>
  357.            <title>Implementing a search engine with elasticsearch and Symfony (part 3/3)</title>
  358.            <link href="https://www.strangebuzz.com/en/blog/implementing-a-search-engine-with-elasticsearch-and-symfony-part-3" />
  359.            <id>https://www.strangebuzz.com/en/blog/implementing-a-search-engine-with-elasticsearch-and-symfony-part-3</id>
  360.            <published>2019-11-16T00:00:00+01:00</published>
  361.            <updated>2020-04-18T00:00:00+02:00</updated>
  362.            <author>
  363.                <name>COil</name>
  364.                <email>coil@strangebuzz.com</email>
  365.            </author>
  366.            <summary type="html">In this third and last part, we will continue to improve our search engine. First, we will enhance our elasticsearch stack with Kibana. Then, we will implement an autocomplete using an elasticsearch suggester.
  367. </summary>
  368.        </entry>
  369.                            <entry>
  370.            <title>Implementing a search engine with elasticsearch and Symfony (part 2/3)</title>
  371.            <link href="https://www.strangebuzz.com/en/blog/implementing-a-search-engine-with-elasticsearch-and-symfony-part-2" />
  372.            <id>https://www.strangebuzz.com/en/blog/implementing-a-search-engine-with-elasticsearch-and-symfony-part-2</id>
  373.            <published>2019-10-28T00:00:00+01:00</published>
  374.            <updated>2019-10-28T00:00:00+01:00</updated>
  375.            <author>
  376.                <name>COil</name>
  377.                <email>coil@strangebuzz.com</email>
  378.            </author>
  379.            <summary type="html">This is the second part of the tutorial. In this post, we will see how to improve our search engine to make is much more relevant. We will use an alias, create a custom command to populate the index. We will tune the search applying boosts to some fields and eventually, we will paginate the result list.
  380. </summary>
  381.        </entry>
  382.                            <entry>
  383.            <title>Implementing a search engine with elasticsearch and Symfony (part 1/3)</title>
  384.            <link href="https://www.strangebuzz.com/en/blog/implementing-a-search-engine-with-elasticsearch-and-symfony" />
  385.            <id>https://www.strangebuzz.com/en/blog/implementing-a-search-engine-with-elasticsearch-and-symfony</id>
  386.            <published>2019-09-22T00:00:00+02:00</published>
  387.            <updated>2020-01-12T00:00:00+01:00</updated>
  388.            <author>
  389.                <name>COil</name>
  390.                <email>coil@strangebuzz.com</email>
  391.            </author>
  392.            <summary type="html">In this post, we will see how to create a full-text search engine with elasticsearch in a Symfony application. We will use Docker compose to set up an elasticsearch stack. We will try to keep the configuration as minimal as possible keeping the sensible default components values. In the end, on this website, we will able to search for articles and snippets matching one or several keywords.
  393. </summary>
  394.        </entry>
  395.                            <entry>
  396.            <title>On hiding the main Symfony front controller</title>
  397.            <link href="https://www.strangebuzz.com/en/blog/on-hiding-the-main-symfony-front-controller" />
  398.            <id>https://www.strangebuzz.com/en/blog/on-hiding-the-main-symfony-front-controller</id>
  399.            <published>2019-08-23T00:00:00+02:00</published>
  400.            <updated>2020-01-31T00:00:00+01:00</updated>
  401.            <author>
  402.                <name>COil</name>
  403.                <email>coil@strangebuzz.com</email>
  404.            </author>
  405.            <summary type="html">In this post, we will see how to hide the front controller&#039;s file name of a Symfony application so it can&#039;t be accessed when typing it: &quot;index.php&quot;. The less the users (or hackers of course) will know about the technical implementation of your website, the better it is.
  406. </summary>
  407.        </entry>
  408.                            <entry>
  409.            <title>Disable the HTML5 validation of all your Symfony forms with a feature flag</title>
  410.            <link href="https://www.strangebuzz.com/en/blog/disable-the-html5-validation-of-all-your-symfony-forms-with-a-feature-flag" />
  411.            <id>https://www.strangebuzz.com/en/blog/disable-the-html5-validation-of-all-your-symfony-forms-with-a-feature-flag</id>
  412.            <published>2019-06-29T00:00:00+02:00</published>
  413.            <updated>2019-07-01T00:00:00+02:00</updated>
  414.            <author>
  415.                <name>COil</name>
  416.                <email>coil@strangebuzz.com</email>
  417.            </author>
  418.            <summary type="html">In this post, we will see how to implement a simple feature flag. This flag will help us to debug our forms and will allow to disable the HTML5 client side validation of all the forms of an application.
  419. </summary>
  420.        </entry>
  421.                            <entry>
  422.            <title>On using the Symfony NotCompromisedPassword security validator</title>
  423.            <link href="https://www.strangebuzz.com/en/blog/on-using-the-symfony-notcompromisedpassword-security-validator" />
  424.            <id>https://www.strangebuzz.com/en/blog/on-using-the-symfony-notcompromisedpassword-security-validator</id>
  425.            <published>2019-06-05T00:00:00+02:00</published>
  426.            <updated>2019-06-05T00:00:00+02:00</updated>
  427.            <author>
  428.                <name>COil</name>
  429.                <email>coil@strangebuzz.com</email>
  430.            </author>
  431.            <summary type="html">In this post, we will see how to use the NotCompromisedPassword validator which was &lt;a target=&quot;_blank&quot; href=&quot;https://symfony.com/blog/new-in-symfony-4-3-compromised-password-validator&quot;&gt;introduced in Symfony 4.3&lt;/a&gt;. This validator allows us to check if a given password was publicly exposed in a data breach and is therefore compromised. We will see how to use it manually and how to offer the ability to the user to test their password with this validation.
  432. </summary>
  433.        </entry>
  434.                            <entry>
  435.            <title>Implement a &quot;Read in your language&quot; link with Symfony</title>
  436.            <link href="https://www.strangebuzz.com/en/blog/implement-a-read-in-your-language-link-with-symfony" />
  437.            <id>https://www.strangebuzz.com/en/blog/implement-a-read-in-your-language-link-with-symfony</id>
  438.            <published>2019-04-18T00:00:00+02:00</published>
  439.            <updated>2019-04-19T00:00:00+02:00</updated>
  440.            <author>
  441.                <name>COil</name>
  442.                <email>coil@strangebuzz.com</email>
  443.            </author>
  444.            <summary type="html">In this post, we will see how to implement a &quot;Read in your language&quot; link in your pages. The goal will be to detect the user browser preferred language and show him a link if the current page is available in his language.
  445. </summary>
  446.        </entry>
  447.                            <entry>
  448.            <title>Send Symfony application logs to Slack with Monolog</title>
  449.            <link href="https://www.strangebuzz.com/en/blog/send-symfony-application-logs-to-slack-with-monolog" />
  450.            <id>https://www.strangebuzz.com/en/blog/send-symfony-application-logs-to-slack-with-monolog</id>
  451.            <published>2019-03-14T00:00:00+01:00</published>
  452.            <updated>2020-05-14T00:00:00+02:00</updated>
  453.            <author>
  454.                <name>COil</name>
  455.                <email>coil@strangebuzz.com</email>
  456.            </author>
  457.            <summary type="html">In this post, we will see how to send logs to Slack. Typical usage is, of course, to send critical errors to be warned in real-time and be able to fix the issues quickly. But we can also send other types of notifications.
  458. </summary>
  459.        </entry>
  460.                            <entry>
  461.            <title>The Symfony Request class interactive cheatsheet</title>
  462.            <link href="https://www.strangebuzz.com/en/blog/the-symfony-request-class-interactive-cheatsheet" />
  463.            <id>https://www.strangebuzz.com/en/blog/the-symfony-request-class-interactive-cheatsheet</id>
  464.            <published>2019-01-29T00:00:00+01:00</published>
  465.            <updated>2020-04-10T00:00:00+02:00</updated>
  466.            <author>
  467.                <name>COil</name>
  468.                <email>coil@strangebuzz.com</email>
  469.            </author>
  470.            <summary type="html">In this post, we will review one of the most used and useful service (in fact it&#039;s a value object) provided by Symfony which is the &lt;a target=&quot;_blank&quot; href=&quot;https://api.symfony.com/master/Symfony/Component/HttpFoundation/Request.html&quot;&gt;Request service&lt;/a&gt; Is is part of the HttpFoundation component. Symfony is indeed a &lt;a target=&quot;_blank&quot; href=&quot;https://symfony.com/doc/current/introduction/http_fundamentals.html#requests-and-responses-in-http&quot;&gt;&quot;Request/Response&quot; framework&lt;/a&gt;. It will be &lt;b&gt;interactive&lt;/b&gt;, that means that you will be able to change the URL used in the examples and provide your one so you can test with different parameters. It will, therefore, save you manual &lt;code&gt;dump()&lt;/code&gt; calls. 😉
  471. </summary>
  472.        </entry>
  473.                            <entry>
  474.            <title>Implementing a login fail2ban like system for Symfony with Redis</title>
  475.            <link href="https://www.strangebuzz.com/en/blog/implementing-a-login-fail2ban-like-system-for-symfony-with-redis" />
  476.            <id>https://www.strangebuzz.com/en/blog/implementing-a-login-fail2ban-like-system-for-symfony-with-redis</id>
  477.            <published>2018-11-16T00:00:00+01:00</published>
  478.            <updated>2020-10-17T00:00:00+02:00</updated>
  479.            <author>
  480.                <name>COil</name>
  481.                <email>coil@strangebuzz.com</email>
  482.            </author>
  483.            <summary type="html">In this post, we will see how to implement a fail2ban system for Symfony. It will log login failure attempts for a given IP and will prevent further tries once a critical threshold is reached. When happening, a customized error page will be displayed to the user. ⏹
  484. </summary>
  485.        </entry>
  486.    </feed>
  487.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid Atom 1.0" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=https%3A//feeds.feedburner.com/strangebuzz/en

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda