26
2019.2

loopfile标签

作者: POPASP
loopfile标签 loopfile的作用是将文件夹中的文件或目录进行循环展示 举例 ```brush:html
文件名修改日期
[@name][@DateLastModified]
``` 上例中从POPASP框架目录中中取出文件属性(包含字段:文件名、最后修改日期),并进行循环展示。上例如果写成asp代码的话,如下 ```brush:html <% sub filelist(file) %> <%=file.name%><%=file.DateLastModified%> <% end sub %> <% Call P_("file").file_map(POP_MVC.mvc_dir,"filelist") %>
文件名修改日期
``` 在上例中,不管是模板引擎还是asp原生代码都是将POPASP根目录下的文件进行循环展示,两者其实都是使用了POP_MVC.file.file_map这个强大的回调函数。模板引擎代码中 ```brush:html ``` 可以改写为 ```brush:html ``` ### loopfile格式 ```brush:html 循环块 ``` file_map是默认采用的回调函数,其实还有几个。 ### loopfile可采用的文件回调函数 | 方法名 | 说明 | | ---- | ---- | | file_map | 仅对文件夹下的文件(不递归子文件夹)进行回调函数处理,只处理文件,不处理目录 | | files_map | 对文件夹(递归查找子文件夹)的所有文件进行回调函数处理,只处理文件,不处理目录 | | file_page_map | 对文件夹(不递归查找子文件夹)的所有文件进行回调函数处理,并进行分页,只处理目录,不处理文件 | | folder_map | 仅对文件夹下的目录(不递归子目录)进行回调函数处理,只处理目录,不处理文件 | | folders_map | 对文件夹(递归查找子目录)的所有目录进行回调函数处理,只处理目录,不处理文件 | | folder_page_map | 对文件夹(不递归查找子目录)的所有目录进行回调函数处理,并进行分页,只处理目录,不处理文件 | | all_map | 对文件夹(递归查找子文件夹)的所有文件与目录进行回调函数处理,既处理目录,又处理文件,不进行分页 | 上面这几个方法,参数个数与参数类型都一致。比如all_map ```brush:vb Sub all_map(path,callback) '内码省略 End Sub ``` 第一个参数是要遍历的文件夹路径,第二个参数callback是回调函数名称。模板引擎中的loopfile标签对这些方法进行了包装,可以方便在html中使用。 ### loopfile分页 loopfile将分页也写进了代码,使用起来非常方便,可以使用的方法有file_page_map、folder_page_map,目前POPASP还不能做到将文件名与目录放到一块进行分页展示。 ```brush:html
文件名修改日期
[@name][@DateLastModified]
{=P_("page").show}
``` ### loopfile的参数详解 ```brush:html ``` 前两个参数我们已经讲过了,第三个参数跟loopdb的标识符一样,如果我们从控制器或者loopfile循环之前的模板页面进行了数据分配 ```brush:html {:$dirPath=POP_MVC.mvc_dir & "Tpl/"}
文件名修改日期
[@name][@DateLastModified]
``` 此时会忽略第一个参数的路径,而会采用第三个参数的路径。 第一个参数,可以是具体的路径,比如 ```brush:hmtl ``` 也可以是分配的变量,如果是分配的变量需要添加$ ```brush:hmtl ``` ### $__index输出序号 有时候我们需要在循环体内输出序号,那么这时候就要用到`$__index`,它是从0开始编号的。 举例: ```brush:html
序号文件名修改日期
133[@name][@DateLastModified]
``` ### loopfile的嵌套 loopfile可以跟if、select等其它块标签嵌套,但是不能跟自身相互嵌套。由于loopfile使用的方法如files_map、folders_map、all_map本身对文件或文件夹进行了递归循环,所以也没有必要再进行相互嵌套。如果跟自身相互嵌套,并不报错,但是不会得到正确的结果,这一点要牢记。 比如,下面的代码想先展现目录,再嵌套展现文件,但是嵌套使用不会得到想要的结果。 ```brush:hmtl
    {:$dirPath = POP_MVC.mvc_dir & "Tpl/"}
  • [@name]
    • [[@name]]
``` ### File文件对象的属性 为了方便大家使用,下面列出File文件对象的属性。 | 属性 | 说明 | |----|----| |Attributes|设置或返回指定文件的属性| |DateCreated|返回指定文件创建的日期和时间。| |DateLastAccessed|返回指定文件最后被访问的日期和时间| |DateLastModified|返回指定文件最后被修改的日期和时间| |Drive|返回指定文件或文件夹所在的驱动器的驱动器字母| |Name|设置或返回指定文件的名称| |ParentFolder|返回指定文件或文件夹的父文件夹对象| |Path|返回指定文件的路径| |ShortName|返回指定文件的短名称| |ShortPath|返回指定文件的短路径| |Size|返回指定文件的尺寸(字节)| |Type|返回指定文件的类型。| ### Folder目录对象的属性 为了方便大家使用,下面列出Folder目录对象的属性。 | 属性 | 说明 | |----|----| |Attributes|设置或返回指定文件夹的属性| |DateCreated|返回指定文件夹被创建的日期和时间| |DateLastAccessed|返回指定文件夹最后被访问的日期和时间| |DateLastModified|返回指定文件夹最后被修改的日期和时间| |Drive|返回指定文件夹所在的驱动器的驱动器字母| |IsRootFolder|假如文件夹是根文件夹,则返回 ture,否则返回 false| |Name|设置或返回指定文件夹的名称| |ParentFolder|返回指定文件夹的父文件夹| |Path|返回指定文件的路径 |ShortName|返回指定文件夹的短名称| |ShortPath|返回指定文件夹的短路径| |Size|返回指定文件夹的大小 |Type|返回指定文件夹的类型| Folder对象比File对象的属性多了一个IsRootFolder,其他没有区分。