Introducción

Los campos únicos se definen con el atributo de la clase Entity:

$field->unique = true

Campos únicos en los formularios de administración

Por defecto, cada vez que se asigna valor a un campo único, el sistema verifica que el valor ya no se encuentre asignado en la base. Si el valor se encuentra asignado, entonces se genera el error “Valor utilizado”.

Actualización de campos únicos en los formularios de administración

Existe un método opcional, ya definido en los componentes Fieldset, que permite modificar el comportamiento por defecto de los campos únicos: check_(fieldName).

check_ efectúa el chequeo del field de la forma convencional, pero si el error retornado es “Valor utilizado”, entonces se actualizarán los valores del fieldset con los valores del campo único consultado. Se debe considerar que al chequear un valor único, se retorna como resultado del chequeo, un atributo adicional de respuesta “row” con los valores de la fila del campo único.

  $scope.check_ = function(fieldName){
    $scope.check(fieldName).then(
      function(response){
        if(response.error == "Valor utilizado") {
          $scope.component.params["id"] = response.row.id.value;
          $scope.initializeComponent();
        }
      }
    );
  };
  

Para utilizarlos se debe cambiar el template para hacer referencia al “check_”:

< input ng-model="row.numero_documento.value" ng-blur="check_('numero_documento')"/>

Detalles de implementación

La actualización del fieldset completando un valor de campo único existente puede dar lugar a confusión: Si se actualiza el valor del campo único y luego se busca otro valor, el usuario se puede confundir y modificar una fila no deseada.

Se recomienda bloquear la administración de campos únicos una vez efectuada la actualización. Si se desea modificar el valor del campo único, definir una interfaz independiente.

< input ng-model="row.numero_documento.value" ng-blur="check_('numero_documento')" ng-disabled="row.id.value" / >