ctrl-f5/ctrl-rad-bundle

View on GitHub
Form/Traits/CreateFilterCriteria.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

namespace Ctrl\RadBundle\Form\Traits;

use Symfony\Component\Form\FormInterface;

trait CreateFilterCriteria
{
    /**
     * @param FormInterface $form
     * @return array
     */
    protected function createFilterCriteria(FormInterface $form)
    {
        $criteria = array();

        /** @var FormInterface $child */
        foreach ($form as $child) {
            $field = $child->getName();
            $fieldPath = str_replace('_', '.', $field);
            switch ($child->getConfig()->getType()->getBlockPrefix()) {
                case 'text':
                    if ($child->getData()) {
                        $criteria[$fieldPath . ' LIKE'] = '%' . $child->getData() . '%';
                    }
                    break;
                case 'checkbox':
                    if ($child->getData()) {
                        $criteria[$fieldPath] = true;
                    }
                    break;
                default:
                    if ($child->getData()) {
                        $criteria[$fieldPath] = $child->getData();
                    }
            }
        }

        return $criteria;
    }
}