Today I am going to talk about process component in Symfony 2. Process component is a useful library which can be used to run console commands as it is. The main driving factor to discuss this topic is, recently I had an issue in running multiple console commands in Symfony 2. I tried using doRun method in Application. It worked for commands like doctrine:mapping:import and doctrine:generate:entities but not for doctrine:generate:form. Even it worked for doctrine:generate:entities, I didn’t managed to generate a single entity in a bundle. I had to generate all entities for the whole bundle. In other words “php app/console doctrine:generate:entities ACMETestBundle:Person –no-backup” did not worked. So I had a really difficult time with this until someone suggested me about the process component when I posted this question in StackOverflow.. To be honest, I didn’t had the opportunity to explore process component thoroughly before that. But I found that process component is a really cool library which we can use to run console commands in Symfony 2. I thought it might be useful for someone who is trying to run console command using the application. If you have struggled running console commands using Application’s, run or doRun methods, this post is especially for you.
Did you ever wonder of creating your own custom twig function. For instance, assume that you are displaying set of url’s in your view (twig) file. Suddenly you want all or some of your url’s to be opened in a new tab once clicked. We all know this can easily be done by having the target attribute in anchor tag such as <a href = “link” target=”_blank”>Text</a>. This seems to be pretty straight forward. But if you want to add or remove this target attribute one day in all of your urls, it will be nightmare to change all down the line. Instead, if you have used a custom twig function to add this property to the link and use that function instead of html anchor tag in the twig file, things will be much easier when it comes to changing things later.
Let’s see how we do this,
- To achieve what we wanted, we want to create a new class (which extends Twig_Extension). Create a new PHP class and save it in a your project. Define the class name extending ‘\Twig_Extension’. (Make sure you add the namespace)
- In the class file, you need to declare two functions. One is to register the custom function and one is to return the name of the class as a string. The first function you need to add is ‘getFilters()’ and register your custom function there.
public function getFilters()
new \Twig_SimpleFilter(‘custom_website’, array($this, ‘customWebsiteFilter’)),
Today I am going to talk about some examples on converting SQL queries into DQL . Doctrine query language (DQL) is the query language used by Doctrine ORM. Doctrine ORM 2.x is shipped with Symfony 2.x by default. Let’s take some examples and discuss. For the following examples we will be creating an instance of Doctrine query builder to structure DQL’s.
Creating an instance of doctrine query builder
$em = $this->getDoctrine()->getManager();
$result = $em->createQueryBuilder();
SELECT * FROM contact
$dql = $result->select(‘c’)