Add possibility to hide empty value in customfield group view rendering

A new parameter is defined :

```
chill_custom_fields:
    show_empty_values_in_views = true|false
```

A new method is added to CustomFieldInterface: `isEmptyValue`. To ease
the dev of new classes, an AbstractCustomField class is created, which
implements the most commons function (currently, only isEmptyValue).

A new Twig Filter is added: `chill_custom_field_is_empty`

The twig filter `chill_custom_fields_group_widget` has a new possibility
in array option : `show_empty`. Default to
chill_custom_fields.show_empty_values_in_view. May be forced by
true/false.
This commit is contained in:
2015-12-15 11:11:36 +01:00
parent 9ca2be78eb
commit fe73a64e9d
14 changed files with 131 additions and 27 deletions

View File

@@ -76,10 +76,21 @@ class CustomFieldRenderingTwig extends \Twig_Extension implements ContainerAware
'is_safe' => array(
'html'
)
)),
new \Twig_SimpleFunction('chill_custom_field_is_empty', array(
$this,
'isEmptyValue'
))
];
}
public function isEmptyValue($customFieldorClass, $fields, $slug = null)
{
return $this->container->get('chill.custom_field.helper')
->isEmptyValue($fields, $customFieldorClass);
}
/* (non-PHPdoc)
* @see Twig_ExtensionInterface::getName()
*/

View File

@@ -37,15 +37,25 @@ use Chill\CustomFieldsBundle\Entity\CustomField;
*/
class CustomFieldsGroupRenderingTwig extends \Twig_Extension implements ContainerAwareInterface
{
/** @var Container $container The container */
private $container;
/** @var array $defaultParams The default parameters */
private $defaultParams = array(
'layout' => 'ChillCustomFieldsBundle:CustomFieldsGroup:render.html.twig'
'layout' => 'ChillCustomFieldsBundle:CustomFieldsGroup:render.html.twig',
'show_empty' => True
);
/**
*
* @param boolean $showEmptyValues whether the empty values must be rendered
*/
public function __construct($showEmptyValues)
{
$this->defaultParams['show_empty'] = $showEmptyValues;
}
/*
* (non-PHPdoc)
* @see \Symfony\Component\DependencyInjection\ContainerAwareInterface::setContainer()
@@ -92,6 +102,7 @@ class CustomFieldsGroupRenderingTwig extends \Twig_Extension implements Containe
* @param array $params The parameters for rendering :
* - layout : allow to choose a different layout by default :
* ChillCustomFieldsBundle:CustomFieldsGroup:render.html.twig
* - show_empty : force show empty field
* @return string HTML representation of the custom field group value, as described in
* the CustomFieldInterface. Is HTML safe
*/
@@ -102,6 +113,7 @@ class CustomFieldsGroupRenderingTwig extends \Twig_Extension implements Containe
return $this->container->get('templating')
->render($resolvedParams['layout'], array(
'cFGroup' => $customFielsGroup,
'cFData' => $fields));
'cFData' => $fields,
'show_empty' => $resolvedParams['show_empty']));
}
}