4.5.6 getVisibilities

La méthode getVisibilities permet de redéfinir la visibilité des attributs.

/**
 * @param \Doc $document
 * @return RenderAttributeVisibilities new attribute visibilities
 */
public function getVisibilities(\Doc $document);

Les classes Dcp\Ui\DefaultView et Dcp\Ui\DefaultEdit retournent les visibilités par défaut, en fonction du contrôle de vue.

Cette méthode doit retourner un objet de la classe Dcp\Ui\RenderAttributeVisibilities qui contient les visibilités à appliquer pour chacun des attributs.

La classe RenderAttributeVisibilities expose la méthode setVisibility qui permet de modifier la visibilité d'un attribut en particulier. Cette visibilité outrepasse la visibilité par défaut et la visibilité indiquée par un masque provenant du contrôle de vue.

/**
 * Affect new visibility to an attribute
 * This visibility is more prioritary than mask
 * @param string $attributeId attribute identifier
 * @param string $visibility one of I,H,O,R,W,S
 * @return $this
 * @throws Exception
 */
public function setVisibility($attributeId, $visibility);

Les visibilités utilisables sont définies comme constantes de la classe \Dcp\Ui\RenderAttributeVisibilities.

Si une visibilité est appliquée à un attribut structurant, une propagation de cette visibilité sera effectuée.

4.5.6.1 Exemple

Modification des visibilités de 2 attributs en surchargeant la classe de vue par défaut.

use Dcp\Ui\RenderAttributeVisibilities;
use Dcp\AttributeIdentifiers\My_family;
 
class RenderConfigCustom extends \Dcp\Ui\DefaultView
{
    /**
     * @param \Doc $document
     * @return \Dcp\Ui\RenderAttributeVisibilities new attribute visibilities
     */
    public function getVisibilities(\Doc $document)
    {
        $visibilities = parent::getVisibilities($document);
 
        $visibilities->setVisibility(
            My_family::my_tab_info, 
            \Dcp\Ui\RenderAttributeVisibilities::ReadOnlyVisibility
        );
 
        $visibilities->setVisibility(
            My_family::my_tab_annexe,
            \Dcp\Ui\RenderAttributeVisibilities::WriteOnlyVisibility
        );
 
        return $visibilities;
    }
}
×