cfinvoke двумя разными способами - PullRequest
0 голосов
/ 01 октября 2018

У меня есть два cfinvoke, мне нужно использовать их в одном cfm

<cfinvoke component="cfc/queries" method="getProjects"  searchString="#Session.Auth.pref_name#" view="#Session.Auth.view#" returnvariable="Projects"> 
<cfinvoke component="cfc/queries" method="projectDetails"  searchString="#URL.id#" projectsuffix="#URL.suffix#" returnvariable="Details">

, чтобы вернуть два запроса, но когда я так кодирую, это не работает.Я все еще новичок в ColdFusion, и я не знаю, как это исправить.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Мы можем написать как ниже,

<!--- Object creation --->
<cfset query = CreateObject("component", "cfc.queries")/>

<!--- Function call --->
<cfset Projects = query.getProjects( searchString = session.Auth.pref_name, view = session.Auth.view )>
<cfset Details = query.projectDetails( searchString = session.Auth.pref_name, view = session.Auth.view )>
0 голосов
/ 01 октября 2018

Поскольку обе функции находятся в одном и том же CFC, вы не захотите использовать cfinvoke, поскольку он воссоздает объект при каждом вызове.Вместо этого используйте new или createObject().

<cfset queries = new location.to.cfc.queriesCFC()>

Тогда вы можете просто ссылаться на функции.

<cfset Projects = 
    queries.getProjects(
        searchString=session.Auth.pref_name, 
        view = session.Auth.view
    )
>
<cfset Details = 
    queries.projectDetails(
        searchString=url.id, 
        projectsuffix=url.suffix
    )
>

Возможно, вы захотите очистить url.id и url.suffix, прежде чем проходить через них.Это поможет с проблемами инъекций.

Что делает getProjects()?

...