Pergunta

Eu pensei métodos de CFC definidos como funções em cfscript estão de saída = false por padrão, mas quando eu abrir o CFC em cfcexplorer.cfc (navegador diretamente ao CFC), ele diz que saída: habilitado.

Bug do cfcexplorer.cfc?

Foi útil?

Solução

Resposta curta : Não importa.

cfscript faz nada não saída a menos que você chamar explicitamente writeOutput () a partir dele. Isso inclui funções em cfscript bem como qualquer fora código cfscript de uma função.

Isto é diferente de sintaxe CF etiquetas, que, por padrão, a saída de pelo menos um espaço em branco entre as tags. Em cfscript, qualquer texto que você escreve será compilado pelo motor CFML. em tags CF, qualquer texto que você escreve será escrito para o buffer de saída e enviado para o navegador.

Resposta longa : É o mesmo que não especificar um atributo de saída.

blocos cfscript não mostra nada. Quaisquer blocos de tag, a menos que envolto em cfsilent, fazer espaços em branco saída se nada mais. Sim, até mesmo cffunctions fazer, mas a saída é descartado se o atributo de saída é definida como falsa.

A essência da resposta de Pedro Boughton está correto. Não é nem envolto em cfsilent nem cfoutput. Saída não é proibido, mas isso não acontece a menos que você fazê-lo explicitamente.

Você sempre pode combinar um cffunction de tags com scripts para obter o melhor dos dois mundos. Algo como ...

<cffunction name="x" output="false" access="package">
    <cfargument name="y" type="string" required="false" default="YY" />
    <cfscript>
        var someValue = y & "something";
        writeOutput("test"); // this will not be written
        return someValue;
    </cfscript>
</cffunction>

Isso permite que você especificar uma saída e acesso na etiqueta cffunction, bem como permitir argumentos para ser opcional (que você não pode fazer através de funções cfscript), em seguida, preencher o corpo com cfscript, incluindo declarações var e o retorno de função.

Claro que, para essa função, se você remover o atributo output ou alterá-lo para true, ele irá de saída "test" antes de retornar.

Outras dicas

funções cfscript é um macaco estranho. Eles são uma espécie de ambos. Você não pode especificar que eles são emitidos = "false", mas eles são até que você use um writeOutput (), mas eles são relatados por cfcexplorer como sendo de saída = "true". É um problema estranho eu acho que o Comité Consultivo CFML está olhando agora.

Eu não sou inteiramente certo, mas meu palpite seria que as funções de script são as mesmas marcas cffunction a este respeito -. Em que o padrão não é nem true nem false

A definição do atributo output para uma cffunction, o seguinte são o caso:

  • true é equivalente à função de ser envolvido em cfoutput.
  • false é equivalente à função de ser envolvido em cfsilent.
  • Deixando-padrão (indefinido) é equivalente ao código padrão que é enrolado nem com cfoutput nem cfsilent.

No entanto, eu quase nunca uso cfscript, e isso pode não ser realmente o caso -. Nós vamos ter que esperar pelos outros para vir e confirmar ou corrigir este

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top