getPageContext (). getrequest (). getparametermap () с многопартальными формами?

StackOverflow https://stackoverflow.com/questions/2194442

Вопрос

Ниже приведен код, который я использую для тестирования этого:

<cfif structkeyexists(form, "submitted")>
    <cfdump var="#getPageContext().getRequest().getParameterMap()#">
</cfif>

<cfoutput>
<form method="post" action="#cgi.script_name#?firstname=tony">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="hidden" name="submitted" value="1">
    <input type="submit">
</form>
</cfoutput>

Что мы делаем, используют getPageContext (). getrequest (). getparametermap (), чтобы получить хеш формы и сервисы URL во время запроса на почту. Теперь это работает все хорошо и DANDY, пока вы не установите атрибут enctype формы на «Multipart / Form-data», как:

<cfif structkeyexists(form, "submitted")>
    <cfdump var="#getPageContext().getRequest().getParameterMap()#">
</cfif>

<cfoutput>
<form method="post" action="#cgi.script_name#?firstname=tony" enctype="multipart/form-data‎">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="hidden" name="submitted" value="1">
    <input type="submit">
</form>
</cfoutput>

Что произойдет на данный момент, это то, что ни одно из значений поля формы не возвращается в хеш, возвращенном из GetPageContext (). Getrequest (). GetParameTermap ().

Кто-нибудь знает, где мы можем получить эти данные или обходной путь?

Весь причина мы используем GetPageContext (). GetRequest (). getParameTermap () - это потому, что он возвращает массив в качестве значения переменной вместо списка разделите запятую, как с использованием объема формы.

ОБНОВИТЬ: Это на 8.0.1 с накопленным исправлением 4 приложено.

ОБНОВИТЬ: Причина, по которой вы не можете использовать ListToArray, это потому, что сказать, что у вас есть два поля имени имя и пользователь введите значения для обоих полей (1 и 2). Какой CF будет делать, это вернуть ключ в структуре формы под названием имя С динамическими списком запятой для двух значений (1,2). Это здорово, но сказать Пользователь входит в значения для поля, содержащего запятые Как 1,2,3,4 для первого поля и 5,6,7,8 для второго поля. Значение в форме формы для имя будет 1,2,3,4,5,6,7,8. Это не правильно. Отказ Теперь, поскольку getparametermap () возвращает массив для значения, У меня было бы два элемента вот так: ["1,2,3,4","5,6,7,8"].

ОБНОВИТЬ: Попробовал видеть, что gethttrequestdata (). Содержание вернется на реквизн на льгот. Похоже, это пустой бинарный.

ОБНОВИТЬ: Спасибо вам, чтобы выяснить это, и не используя GetPageContext полностью. Хитрость использовала метод getPartsArray () в области сферы формы. Я даже не знал, что это существовало!

Сохраняйте идеи, пожалуйста!

Это было полезно?

Решение

(Хорошо .. Возьми два) Это, кажется, работает с CF9. Я не могу проверить это с CF8 в данный момент. Можете ли вы дать это Whirl?

<cfif structkeyexists(form, "submitted")>
   <!--- if this is a multipart request ...--->
   <cfset variables.parts = form.getPartsArray()>
   <cfif structKeyExists(variables, "parts")>
      <cfoutput>   
      <cfloop array="#variables.parts#" index="p">
         <cfif p.isParam()>
            isParam() = #p.isParam()# <br />
            getName() = #p.getName()# <br />
            stringValue() = #p.getStringValue()# <hr />
         </cfif>
      </cfloop>
      </cfoutput>
   </cfif>
</cfif>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top