当前位置: 首页 > 后端技术 > PHP

OctoberCMS-4页

时间:2023-03-29 13:54:00 PHP

PagesPages:page;网站页面的内容由页面模板定义。模板文件位置:themes/theme_name/pages目录下。页面文件的扩展名为htm。在文档结构中,Configuration(配置)和TwigMarkup(标记)部分是必须的,PHP代码部分是可选的。最简单的例子url="/"==

Hello,world!

页面配置页面配置定义在ConfigurationSection。主要定义内容:参数描述URL页面URL,必填。title页面标题,必填。布局页面布局是可选的。如果指定,应包含不带扩展名的布局文件的名称,例如:default.Description后端接口的页面描述,可选。URL设置语法URL以正斜杠“/”开头,可能包含也可能不包含参数。例如:url="/blog"带参数的URL以":"开头。比如下面的url表示/blog/post/...是斜杠后面的参数。October组件或部分PHP代码可以访问此参数。url="/blog/post/:post_id"PHP代码部分访问示例如下:参数名与PHP变量名要求一致。url="/blog/post/:post_id"==functiononStart(){$post_id=$this->param('post_id');}==可选参数:只需要在后面加吗?就是这样。url="/blog/post/:post_id?"URL中的参数不能是可选的。在下一个示例中,:post_id参数被标记为可选的,但将被视为必需的。url="/blog/:post_id?/comments"可选参数以默认值运行。当没有提供参数时,这些默认值用作POST值。默认值不能包含任何“星号管道字符问号”url="/blog/category/:category_id?10"您也可以使用正则表达式来验证参数。添加验证表达式需要添加管道符号[|]在[参数名称]或[问号]之后。表达式不能包含正斜杠符号[/]。url="/blog/:post_id|^[0-9]+$/comments"-这将匹配/blog/10/comments...url="/blog/:post_id|^[0-9]+$"-这将匹配/blog/3...url="/blog/:post_name?|^[a-z0-9\-]+$"-这将匹配/blog/my-blog-post可以找到在参数后加星号以使用特殊的通配符参数。与常规参数不同,通配符参数可以匹配一个或多个URL。URL只能包含一个通配符参数,不能包含正则表达式,或者后跟可选参数。url="/blog/:category*/:slug"比如下面这个例子:/color/:color/make/:make*/edit可以匹配到:/color/brown/make/volkswagen/beetle/retro/edit其中:color:匹配brownmake:匹配volkswagen/beetle/retro动态页面在模板的Twig标记部分,可以使用October提供的函数、过滤器和标签。其中的变量在页面中是必须的。这些变量由页面和布局中的PHP代码或组件提供。页面执行的生命周期onInit在所有组件初始化完成后,处理AJAX请求前执行。onStart函数在页面开始执行时执行。onEnd函数在页面呈现之前和页面组件执行之后执行。在onStart和onEnd函数中,您可以将变量注入到Twig环境中。使用数组表示法向页面传递变量:url="/"==functiononStart(){$this['hello']="Helloworld!";}==

{{hello}}

以下示例说明如何从数据库加载文章集合并将它们显示在页面上。url="/blog"==useAcme\Blog\Classes\Post;functiononStart(){$this['posts']=Post::orderBy('created_at','desc')->get();}==

最新帖子

    {%forpostinposts%}

    {{post.title}}

    {{post.content}}{%endfor%}
Sendacustomresponse页面的执行语句循环中定义的所有函数都可以暂停执行过程并发送自定义响应。从生命周期函数返回响应非常简单。在下面的示例中,页面不会加载任何页面内容,而只是向浏览器返回一个Helloworld字符串。functiononStart(){return'Helloworld!';}一个更有用的例子是做重定向:publicfunctiononStart(){returnRedirect::to('http://google.com');}HandlingForms处理表单:可以在页面或布局的PHP代码部分定义处理表单的函数。使用form_open()函数来定义处理表单的函数。{{form_open({request:'onHandleForm'})}}请输入字符串:{{form_close()}}

Lastsubmittedvalue:{{lastValue}}

上面定义的处理表单的函数是onHandleForm函数,在PHP代码部分定义:functiononHandleForm(){$this['lastValue']=post('value');}这个函数使用POST获取表单提交的值,并将这个值放入当前页面的变量lastValue中,然后在Twig的最后一行上面的代码,把这个值显示出来。关于同名:如果在页面、布局和组件中定义了同名功能,October将按照以下顺序确定优先级:页面>布局>组件。总是第一个优先。如果引用组件中的函数,请使用组件名称或别名,后跟[::],然后是函数名称。{{form_open({request:'myComponent::onHandleForm'})}}404页面当系统找不到目标页面时,系统会显示404页面的内容,URL为/404。错误页面默认情况下,任何错误都会显示一个详细的错误页面,其中包含文件内容、行号和发生错误的堆栈跟踪。我们可以显示自定义错误页面。首先在配置文件config/app.php中找到debug字段,设置为false。然后创建一个带有URL的页面:“/error”。PageVariablesPHP/ComponentAccess:PHP代码部分或组件部分可以通过$this->page访问页面的属性。例如:functiononEnd(){$this->page->title='Adifferentpagetitle';}Twig标签访问:这些变量也可以通过Twig标签访问,方式是this.page.variable;

本页的标题是:{{this.page.title}}

以编程方式向页面注入资源,可以使用addCssaddJs两个方法分别向页面注入样式表和js脚本。只需要在页面或布局的PHP代码部分通过onStart函数注入即可。函数onStart(){$this->addCss('assets/css/hello.css');$this->addJs('assets/js/app.js');}关于路径,如果以/开头,则表示是网站的根目录,如果不以/开头,则表示是主题目录。同时,这些路径支持数组模式,以提供多文件的注入。函数onStart(){$this->addCss(['assets/css/hello.css','assets/css/goodbye.css']);$this->addJs(['assets/js/app.js','assets/js/nav.js']);}支持SCSS和LESS:functiononStart(){$this->addCss(['assets/less/base.less']);}如何在页面中注入文件或者在布局中输出,只需要传{%styles%}和{%scripts%}。