Como verifico se uma única caixa de seleção está ativada / desativada?

8

Não parece haver nenhuma maneira de marcar o valor de uma única caixa de seleção liga / desliga (booleano) no seletor de dados do módulo Regras. Se "field-MyField" = marcado ou "field-MyField" = 1, faça 'blah'. Regras podem fazer isso? Eu devo estar esquecendo alguma coisa

user785179
fonte
O uso de PHP personalizado não funciona quando faço isso: echo ([node: field-MyField] == 1) ;. O PHP está funcionando porque, se eu retornar true ;, ele funcionará. Então, o que está acontecendo???!?
usar o seguinte comando
Bem, acontece que você não pode usar tokens no PHP personalizado.
user785179

Respostas:

6

Há uma mistura de detalhes corretos e incorretos aqui, então vou tentar resolvê-los. Isso se aplica às regras do Drupal 7 e se aplica ao trabalho com um campo booleano.

Para criar uma condição que verifique o estado booleano de um campo (verdadeiro / falso, sim / não, marcado / desmarcado), primeiro verifique se você pode acessar o campo no seletor de dados. Como Bojan mencionou acima, e como mencionado na própria página de administração,

Para fazer com que os campos de entidade apareçam no seletor de dados, talvez seja necessário usar a condição 'entidade possui campo' (ou 'conteúdo é do tipo').

O operador que você deseja escolher é "igual".

Para o campo "Valor dos dados", você pode inserir valores em dois modos, verifique se está usando o "modo de entrada direta". Você deve poder marcar a caixa de seleção que representa VERDADEIRO para esse campo.

Traduzido, o que você está dizendo é: "Este campo é igual a VERDADEIRO?" Você também pode negá-lo, deixando desmarcado ou usando a opção "negar" abaixo.

ezrock
fonte
Agradeço por você ter explicado isso. Não precisei tocar em algo assim novamente, mas sua explicação faz sentido. Espero que ajude os outros.
user785179
3

Você acabou de adicionar uma condição "Comparação de dados", especificar o nome do campo e inserir "1" como o valor. Se o campo não aparecer na lista de campos, adicione primeiro uma condição "A entidade possui campo" e selecione o campo lá. Em seguida, adicione a "Comparação de dados" a seguir.

Bojan Zivanovic
fonte
Coloquei 1 no valor dos dados e recebo: O seletor de dados 1 para o valor do parâmetro é inválido. Alguma outra ideia? Para esclarecer, meus dados para comparar o campo são node: field-MyField. A comparação está definida como EQUALS. O valor dos dados está definido como 1.
user785179
2

Depois de muitas horas de tentativa e erro, acabei resolvendo o problema. Não me peça para explicar isso, porque não faz sentido para mim. Se alguém puder explicar, isso seria muito apreciado!

Defino uma nova condição usando DATA COMPARISON. Em seguida, seleciono o "node: field-MyField: 0" (na verdade existem até 4 deles - node: field-MyField: 1, node: field-MyField: 2, etc.). Em seguida, defino a COMPARAÇÃO para IGUAL. Na segunda parte do seletor de dados, ele não é mais um seletor de dados da caixa de entrada de texto, mas agora aparece como um seletor de dados da caixa de seleção. Quando clico no seletor de dados da caixa de seleção e pressiono salvar, agora o módulo de regras está funcionando corretamente.

bate a cabeça na parede

user785179
fonte
0

Na versão atualizada (fixa?) Das Regras, para isso, adicione uma condição de Comparação de Dados, selecione o campo apropriado no seletor de dados e node:field-to-check, na próxima etapa, deixe o operador de comparação como equals. No grupo de valores Dados, haverá uma caixa de seleção útil, chamada "Valor de Dados". As regras serão comparadas com o valor da caixa de seleção, conforme enviado nesta página.

Zxaos
fonte
0

Provavelmente você precisará usar o Suporte a formulários de regras .

Depois de ativar as regras do formulário para um formulário específico, você pode usar a condição como: O elemento Form tem valor . Essa condição pode ser usada quando o formulário está sendo criado ou validado .

Outro módulo a considerar são as Regras de entidade .

kenorb
fonte