Início
NexoPOS

Atualização Condicional do Campo

A partir do NexoPOS 5.3.x, alguns campos como “select”, “multiselect” e “search-select” terão suas opções atualizadas condicionalmente com base nos valores dos seus irmãos.

A ideia aqui é sempre oferecer ao utilizador escolhas precisas com base numa escolha anterior que ele já fez. Vamos considerar que existe um formulário com 2 campos de seleção. O primeiro campo de seleção lista todos os países, e o segundo campo de seleção lista as cidades dentro do país. Faz mais sentido se as opções do segundo campo de seleção forem atualizadas para corresponder ao país selecionado no primeiro campo.

Configurar Campo

Para um campo observar outras alterações de campos e atualizar suas opções, você precisa fornecer algumas opções extras para o campo do lado do backend.

<?php
use App\Classes\FormInput;

// ...

$country = FormInput::searchSelect(
  label: __( 'Countries' ),
  name: 'country',
);

$town = FormInput::searchSelect(
  label: __( 'Town' ),
  name: 'town',
  refresh: FormInput::refreshConfig(
    url: '', // url to fetch new options
    watch: 'country', // the name of the field to watch changes
);

No exemplo acima, o primeiro campo é “country” e o segundo é “town”. No segundo campo, forneceremos a opção “refresh”, para a qual usaremos o FormInput::refreshConfig. Esta função retorna um array com “url” e “watch”.

url: Este é o URL a usar para buscar as novas opções. Note que o NexoPOS fará uma requisição POST para esse URL apenas com a entrada "identifier", que é o valor selecionado no campo "watch" (no nosso exemplo, é o país).

assistir: Este é o nome do campo a observar. Em qualquer alteração que seja feita nesse campo, todos os campos que definem uma propriedade de “atualização” serão notificados.

Valor Retornado

Como o NexoPOS solicita a URL fornecida, essa URL deve retornar uma resposta válida para que funcione. A entrada que o watch changes espera como resposta é uma lista de opções em um array. Use “Helper::toJsOptions” para converter uma coleção de modelos em um array JavaScript válido que o NexoPOS consiga entender.

image770394

Este é um exemplo de saída esperada pela NexoPOS.