Простым способом в вашем списке файлов вы должны указать URL вашего контроллера, который будет подсчитывать количество загрузок и затем печатать прямую ссылку на файл.
{# list of files in template %}
{% for file in files %}
<a href="{% path('counting', {'id': file.id}) %}">{{ file.name }}</a>
{% endfor %}
// Controller
/**
* Counting the number of file downloads
*
* @Route("/counting/{id}", name="counting", requirements={"id" = "\d+"})
* @Template()
*/
public function countingAction($id)
{
$em = $this->getDoctrine()->getEntityManager();
$file = $em->getRepository('MyBundle:File')->find($id);
$count = $file->getCount();
$file->setCount($count + 1);
$em->persist($entity);
$em->flush();
return array('file' => $file);
}
{# final file page in template #}
<a href="{{ file.url }}">{{ file.name }}</a>