2013-08-02 3 views
0

Я использую cftable или cfloop для вывода таблицы элементов в ColdFusion. Но каков правильный способ вызвать страницу редактора при нажатии одной из строк таблицы?Редактирование строки таблицы в ColdFusion

Вот код:

<table class="grid"> 
<tr> 
    <th>id</th> 
    <th>Date</th> 
    <th>Description</th> 
    <th>Status</th> 
    <th>Urgency</th> 
    <th>Severity</th> 
</tr> 
<cfloop query="GetIssues"> 
<tr> 
    <td><cfoutput>#id#</cfoutput></td> 
    <td><cfoutput>#CreatedOn#</cfoutput></td> 
    <td><cfoutput>#ShortDesc#</cfoutput></td> 
    <td><cfoutput>#Status#</cfoutput></td> 
    <td><cfoutput>#Urgency#</cfoutput></td> 
    <td><cfoutput>#Severity#</cfoutput></td> 
</tr> 
</cfloop> 
</table> 

я мог бы использовать a href сделать запрос GET для редактирования страницы, но это право/безопасный способ?

+2

Во-первых .... не использовать cftable. Второй ... мы можем увидеть какой-то код? –

+0

@Scott Stroz: Обновлено ... – Paul

ответ

3

Вы можете, конечно, создать ссылку на страницу редактора и передать идентификатор, однако, если ваши идентификаторы являются числовыми, для гнусных пользователей будет легко угадать идентификатор другого элемента. Чтобы смягчить эту проблему, я использую UUID для своих идентификаторов. Крайне сложно угадать идентификатор другого элемента.

Кроме того, лучше скопировать cfloop в cfoutput, а не обертывать каждый td - и вы должны обладать именами переменных.

Например:

<cfoutput> 
    <cfloop query="GetIssues"> 
     <tr> 
     <td><a href="edit.cfm?id=#GetIssues.id#">#GetIssues.id#</a></td> 
     <td>#GetIssues.CreatedOn#></td> 
     <td>#GetIssues.ShortDesc#</td> 
     <td>#GetIssues.Status#</cfoutput></td> 
     <td>#GetIssues.Urgency#</cfoutput></td> 
     <td>#GetIssues.Severity#</td> 
     </tr> 
    </cfloop> 
</cfoutput> 
+0

Вы можете добиться того же результата с меньшим количеством кода, используя cfoutput с атрибутом запроса. Кроме того, если вы когда-либо намереваетесь сделать ключевое поле частью имени поля формы, дефисы в uuid могут вызвать проблему. У меня смутные воспоминания о том, что происходит со мной. –

+0

@ Dan Bracuk: не могли бы вы привести пример? – Paul

+0

@DanBracuk Использование cfoutput с атрибутом запроса сохраняет только 2 строки кода: D. Выполнение этого способа, как я показал, также упростит выполнение других запросов, если необходимо, внутри основного цикла. Я использовал значения UIDS внутри имен полей и идентификаторов полей и никогда не сталкивался с проблемой –

Смежные вопросы