Хранение значений формы из формы в сеансе в Coldfusion - PullRequest
0 голосов
/ 24 января 2012

У меня есть следующие значения формы, которые я пытаюсь записать в сеансе:

prop_zip
prop_st
address
city
fname
lname
email
pri_phone_1
pri_phone_2
pri_phone_3

Вот мой код сессии:

<cfapplication name="qsErrorVals" clientmanagement="yes" sessionmanagement="yes" sessiontimeout="#createTimeSpan(0,0,360,0)#">
<cflock timeout="120" name="#session.sessionID#" type="exclusive">
    <cfset session.prop_st="#prop_st#">
    <cfset session.prop_zip="#prop_zip#">
    <cfset session.address="#address#">
    <cfset session.fname="#fname#">
    <cfset session.lname="#lname#">
    <cfset session.email="#email#">
    <cfset session.pri_phone_1="#pri_phone_1#">
    <cfset session.pri_phone_2="#pri_phone_2#">
    <cfset session.pri_phone_3="#pri_phone_3#">  
</cflock>

Пока что я могу сохранить только две переменные из формы:

prop_zip
prop_st

В остальном у меня проблемы с сохранением значений формы в сеансе. Я определил переменные, которые хочу сохранить в сеансе, прежде чем создавать сеанс, и я попытался использовать этот код:

<cfset session.email="#form.email#">
etc...

Тем не менее, я могу сохранить только две переменные, которые я упомянул. Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 24 января 2012

Эх, я обычно выбираю легкий путь.В дополнение к рекомендациям по переменным форм cfapplication, scoping и paraming в ответ Михи , я бы скопировал всю структуру формы в сессию.

 session.theForm = structCopy(form);
2 голосов
/ 24 января 2012

Трудно ответить конкретно, не глядя на весь ваш код, но, надеюсь, этот пример поможет.

  • Тег cfapplication должен находиться в файле Application.cfm или Application.cfc.
  • Код сеанса, скорее всего, следует поместить в другой файл.
  • Я бы рекомендовал указать атрибут scope session в теге cflock.

Файл Application.cfm:

<cfapplication name="qsErrorVals" clientmanagement="yes" sessionmanagement="yes" sessiontimeout="#createTimeSpan(0,0,360,0)#">

ErrorVals.cfm или как вы хотите вызвать файл:

<cfparam name="form.prop_st" default="NY" > <!--- I've added default data for testing --->
<cfparam name="form.prop_zip" default="12345" >
<cfparam name="form.address" default="1st Main St." >
<cfparam name="form.fname" default="John" >
<cfparam name="form.lname" default="Doe" >
<cfparam name="form.email" default="me@domain.com" >
<cfparam name="form.pri_phone_1" default="123-123-1234" >
<cfparam name="form.pri_phone_2" default="123-123-1234" >
<cfparam name="form.pri_phone_3" default="123-123-1234" >
<cfscript>
    prop_st = trim(form.prop_st); // validate, trim, etc.
    prop_zip = trim(form.prop_zip);
    address = trim(form.address );
    fname = trim(form.fname );
    lname = trim(form.lname );
    email = trim(form.email);
    pri_phone_1 = trim(form.pri_phone_1);
    pri_phone_2 = trim(form.pri_phone_2);
    pri_phone_3 = trim(form.pri_phone_3);
</cfscript>

<cflock scope="session" type="exclusive" timeout="10" >
    <cfset session.prop_st = prop_st>
    <cfset session.prop_zip = prop_zip>
    <cfset session.address= address>
    <cfset session.fname= fname>
    <cfset session.lname= lname>
    <cfset session.email= email>
    <cfset session.pri_phone_1= pri_phone_1>
    <cfset session.pri_phone_2= pri_phone_2>
    <cfset session.pri_phone_3= pri_phone_3>  
</cflock>

<cfdump var="#session#">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...