《phalcon笔记大全》由会员分享,可在线阅读,更多相关《phalcon笔记大全(19页珍藏版)》请在金锄头文库上搜索。
1、路由执行事件依次按以下顺序执行:dispatch:beforeDispatchLoop开始循环匹配路由dispatch:beforeDispatchdispatch:beforeNotFoundActiondispatch:beforeExecuteRoutebeforeExecuteRoute($dispatcher)initialize() - dispatch:afterInitialize执行路由到的方法dispatch:afterExecuteRoutedispatch:afterDispatchafterExecuteRoute($dispatcher)结束循环匹配路由dispat
2、ch:afterDispatchLoop其中,以“dispatch:”开头的均为 eventManager 中定义的事件名称。“xxx(.)”这种格式的均为控制器中的方法。控制器命名默认调用 IndexController 控制器中的 indexAction 方法。 控制器名称需要加 Controller 后缀,动作名称需要加 Action 后缀。 控制器的首字母要大写且继承自 PhalconMvcController。 控制器的文件名称与控制器全名完全相同并加扩展名“.php”。视图渲染PhalconMvcView 默认采用 PHP 本身作为模板引擎,此时应该以.phtml 作为视图文件扩展
3、名。可以在控制器方法中使用$this-view-setVar(postId, $postId);来传递变量到视图,然后在视图中用 php 来使用此变量,比如:,setVar 方法也可以通过接收关键字索引数组来一次传递多个值(类似于 smarty 中 assign 的批量赋值) 。PhalconMvcView 支持视图分层。分层渲染第一步、渲染模板:视图文件目录/小写的控制器名(不含后缀) /方法名(不含后缀) .phtml 并保存结果。级别代号 LEVEL_ACTION_VIEW。可在此模板中通过调用getContent() ?输出控制器中的输出内容(比如在控制器中使用 echo 输出一些内容
4、)。第二步、渲染模板(如果有): 视图文件目录/layouts/小写的控制器名(不含后缀) .phtml 并保存结果。级别代号 LEVEL_LAYOUT。可在此模板中通过调用getContent() ?输出第一步的模板结果。第三步、渲染模板(如果有): 视图文件目录/index.phtml 并保存结果。级别代号 LEVEL_MAIN_LAYOUT。同样的,可在此模板中通过调用getContent() ?输出第二步的模板结果。最后保存的结果就是视图的最终结果。可以在控制器方法中使用$this-view-setTemplateAfter(common);来在第三步之前插入一个渲染操作,比如这里渲染
5、模板:视图文件目录/layouts/common.phtml渲染级别控制可以在控制器方法中使用$this-view-setRenderLevel(View:LEVEL_NO_RENDER);来关闭渲染,或者仅仅渲染某个级别$this-view-setRenderLevel(View:LEVEL_ACTION_VIEW);也可以使用$this-view-disableLevel(View:LEVEL_MAIN_LAYOUT);来禁止某个级别的渲染。可以用$this-view-pick(index/pick);选择视图:1. 如果 pick 方法接收到一个不包含“/”的字符串则仅仅设置 LEVEL
6、_ACTION_VIEW 级视图;如果包含“/”则同时还会把第一个“/”前面的部分作为LEVEL_LAYOUT 级视图,比如这里会使用 “视图文件目录/layouts/index.phtml”文件2. 如果接收到一个数字索引数组,则会将编号为 0 的元素作为 LEVEL_ACTION_VIEW 级视图,将编号为 1 的元素作为 LEVEL_LAYOUT 级视图关闭视图如果你的控制器不在视图里产生(或没有) 任何输出,你可以禁用视图组件来避免不必要的处理:$this-view-disable();在模板中包含局部模板partial(shared/login);?或者同时传递变量给局部模板,每一个
7、索引最终会作为变量在局部模板中被赋值:partial(shared/login,array(var1=val1,var2=val2);?缓存视图在控制器方法中的代码例子:/Check whether the cache with key downloads exists or has expiredif ($this-view-getCache()-exists(downloads) /Query the latest downloads$latest = Downloads:find(array(order = created_at DESC);$this-view-latest = $la
8、test;/Enable the cache with the same key downloads$this-view-cache(array(service = myCache,/使用自己的缓存服务,不设置时默认为 viewCachelifetime = 86400, /缓存时间key = downloads /缓存索引名);注册缓存服务:set(viewCache, function() /Cache data for one day by default$frontCache = new OutputFrontend(array(lifetime = 86400);/Memcached
9、 connection settings$cache = new MemcacheBackend($frontCache, array(host = localhost,port = 11211);return $cache;);其中“PhalconCacheFrontend”中包含了对前台数据的处理操作(比如数据格式编码等); “PhalconCacheBackend”中包含了对各种后台缓存引擎的操作。使用模板引擎 在控制器方法中指定模板引擎: / Using more than one template engine $this-view-registerEngines( array( .
10、my-html = MyTemplateAdapter, .phtml = PhalconMvcViewEnginePhp );方法 PhalconMvcView:registerEngines()接受一个包含定义模板引擎数据的数组。每个引擎的键名是一个区别于其他引擎的拓展名。模板文件和特定的引擎关联必须有这些扩展名。PhalconMvcView:registerEngines()会按照相关模板引擎定义的顺序来执行。如果 PhalconMvcView 发现视图文件具有相同名称但扩展名不同,它只会使用第一个。 在注册 view 服务时全局指定模板引擎: set(view, function()
11、$view = new View(); /A trailing directory separator is required $view-setViewsDir(./app/views/); $view-registerEngines(array( .my-html =MyTemplateAdapter /元素值可以是类名、服务名或返回模板引擎对象的匿名函数 ); return $view; , true); Volt 视图最终会被编译成纯 PHP 代码Volt 模板引擎语法3 种不同含义的起始标签1. % . %包裹的标签用于赋值或执行 for 循环、if 条件判断等语句2. . 包裹的标
12、签用于打印表达式的结果到模板3. # . #包裹注释,前后标签可以处于不同行语法详解 post.title 相当于$post-title; post.getTypes().name 相当于$post-getTypes()-name; posttitle 相当于$posttitle; post.title|e 使用过滤器,竖线左边表达式的值将会作为过滤器的第一个参数; %.2f|format(post.price) 相当于执行 sprintf(%.2f, $post-price);默认过滤器列表:Filter Descriptione Applies PhalconEscaper-escapeH
13、tml to the valueescape Applies PhalconEscaper-escapeHtml to the valueescape_css Applies PhalconEscaper-escapeCss to the valueescape_js Applies PhalconEscaper-escapeJs to the valueescape_attr Applies PhalconEscaper-escapeHtmlAttr to the valuetrim Applies the trim PHP function to the value. Removing e
14、xtra spacesleft_trim Applies the ltrim PHP function to the value. Removing extra spacesright_trim Applies the rtrim PHP function to the value. Removing extra spacesstriptags Applies the striptags PHP function to the value. Removing HTML tagsslashes Applies the slashes PHP function to the value. Esca
15、ping valuesstripslashes Applies the stripslashes PHP function to the value. Removing escaped quotescapitalize Capitalizes a string by applying the ucwords PHP function to the valuelower Change the case of a string to lowercaseupper Change the case of a string to uppercaselength Counts the string length or how many items are in an array or objectnl2br Changes newlines n by line breaks (). Uses the PHP function nl2brsort Sorts an array using the PHP fun