Возврат в состояние страницы после вызова страницы удаления файла
Моя форма позволяет пользователям выбирать каталог для просмотра файлов, содержащихся в нем:
(Files.cfm)
<form action="#buildURL('main.files')#" method="post">
<!--- Show the subfolder path, unless already at top level --->
<cfif subfolderPath EQ "">
<h2>You are at the top level.</h2>
<cfelse>
<h2>Current Folder: #subfolderPath#</h2>
</cfif>
<!--- Provide a drop-down list of subfolder names --->
Select folder:
<select name="subfolderPath" onChange="this.form.submit()">
<!--- Provide an option to go up one level to the parent folder, --->
<!--- unless already at the BaseFolder --->
<cfif listLen(subfolderPath, "/") gt 0>
<cfset parentFolder = listDeleteAt(subfolderPath, listLen(subfolderPath, "/"), "/")>
<option value="#parentFolder#">[parent folder]</option>
</cfif>
<!--- For each record in the query returned by <cfdirectory> --->
<cfloop query="DirectoryQuery">
<!--- If the record represents a subfolder, list it as an option --->
<cfif Type eq "Dir">
<option value="#subfolderPath#/#Name#">#Name#</option>
</cfif>
</cfloop>
</select>
<!--- Submit button to navigate to the selected folder --->
<input type="submit" value="go">
</form>
Когда файлы отображаются, появляется функция удаления, которая вызывает другую страницу:
<td align="absmiddle"><a href="#buildUrl('main.deleteFile?filename=#name#&folder=#rereplace(subFolderPath, '/','')#')#" onClick="alert('Are you sure you want to delete this file?')"><img src="/art/assets/images/delete.png" title="delete file" /></a></td>
На странице deleteFile (deleteFile.cfm) файл удаляется:
<cfset local.filePath = ExpandPath( ".\upload\views\files\#rereplace(url.folder, '/','')#\" ) />
<cffile action="delete"
file="#local.filePath##url.filename#"
/>
Затем пользователь возвращается на предыдущую страницу:
<cflocation url="#buildUrl('main.files')#" />
Но не в том же представлении каталога, из которого файл был только что удален. Как я могу вернуть пользователя на страницу файлов и сохранить вид каталога, в котором он находился?
1 ответ
Я могу придумать пару методов
Во-первых, вы можете вызвать файл действия удаления с помощью AJAX. После успешного завершения удалите элемент с текущей страницы. Это причудливый способ, но его может быть трудно осуществить, так как, похоже, вы новичок в этом.
Во-вторых, вы можете отправить контекст текущей страницы вместе с файлом удаления (переменная subFolderPath), добавить его в каталог cflocation при перенаправлении. Похоже, у вас уже есть это с переменной url.folder, поэтому вы должны сделать это:
<cflocation url="#buildUrl('main.files', "subfolderPath=#rc.folder")#" />
Похоже, вы используете FW/1, поэтому я предположил, что buildURL() работает так, как объявлено, а ваши переменные url & form находятся в rc
объем.
Как только вы вернетесь на свою начальную страницу из cflocation, вы захотите вернуть выбор обратно в выбранную вами папку. В вашем цикле, который создает <option>
теги, добавьте проверку, чтобы увидеть, если опция должна быть выбрана. Я бы обычно делал что-то вроде этого:
<option value="..." <cfif listLast(rc.subFolderPath,"\") EQ name>selected</cfif>>#name#</option>