october cms

october cms页面介绍二

2017-09-19  本文已影响0人  ben2012

动态页面


在页面模板的“ Twig”部分内,您可以使用october提供的任何功能,过滤器和标签。任何动态页面都需要变量。在october页面变量可以通过页面或布局PHP部分或组件来准备。在本文中,我们将介绍如何在PHP部分中准备变量。

页执行生命周期

可以在页面和布局PHP部分来定义特殊功能:onInit,onStart和onEnd。

url = "/"
==
function onStart()
{
    $this['hello'] = "Hello world!";
}
==
<h3>{{ hello }}</h3>

书写代码,在模板中可以通过{{hello}}输出变量

下一个例子比较复杂。它显示如何从数据库加载博客文章集合并显示在页面上(Acme \ Blog插件是虚构的)。

url = "/blog"
==
use Acme\Blog\Classes\Post;

function onStart()
{
  $this['posts'] = Post::orderBy('created_at', 'desc')->get();
}
==
<h2>Latest posts</h2>
<ul>
    {% for post in posts %}
        <h3>{{ post.title }}</h3>
        {{ post.content }}
    {% endfor %}
</ul>

在php代码区获取所有帖子信息,并注入到模板中的posts变量中,可以在模板中使用

october提供的默认变量和Twig扩展在“标记指南”中有描述。在动态布局文章中介绍了执行处理程序的整体顺序。

发送自定义响应


在执行生命周期中定义的所有方法都有能力停止进程并返回响应。只需返回生命周期功能的响应。下面的示例将不会加载任何页面内容并返回字符串Hello world!浏览器:

function onStart()
{
    return 'Hello world!';
}

可以使用laravel的Redirect门面触发重定向:

public function onStart()
{
    return Redirect::to('http://google.com');
}

处理表单

您可以使用页面或布局PHP部分中定义的处理程序方法处理标准表单(处理AJAX请求在AJAX框架文章中解释)。使用form_open()函数定义引用事件处理程序的窗体。例:

{{ form_open({ request: 'onHandleForm' }) }}
    Please enter a string: <input type="text" name="value"/>
    <input type="submit" value="Submit me!"/>
{{ form_close() }}
<p>Last submitted value: {{ lastValue }}</p>

在代码部分可以
function onHandleForm() {
    $this['lastValue'] = input('value');
}

function onHandleForm()
{
    $this['lastValue'] = post('value');
}

注意:如果在页面布局中定义了具有相同名称的处理程序,则页面和页面组件 october将执行页面处理程序。如果在组件和布局中定义了处理程序,则将执行布局处理程序。处理程序的优先级是:页面,布局,组件。

如果要引用特定组件中定义的处理程序,请在处理程序引用中使用组件名称或别名:

{{ form_open({ request: 'myComponent::onHandleForm' }) }}

404页

如果主题包含具有URL的页面,则/404在系统找不到请求的页面时显示该页面。

错误页面

默认情况下,将显示包含错误发生的文件内容,行号和堆栈跟踪的详细错误页面您可以通过在脚本中将配置值设置debug为falseconfig/app.php并创建带有该URL的页面来显示自定义错误页面/error。

页面变量

代码中

function onEnd()
{
    $this->page->title = 'A different page title';
}

模板中

<p>The title of this page is: {{ this.page.title }}</p*>
//this.page

this.page.layout
this.page.id
this.page.title 
this.page.description
this.page.meta_title 
this.page.meta_description 
this.page.hidden //判断是否登录可见

以编程方式注入页面资源


如果需要,您可以使用控制器addCss和addJs方法将资源(CSS和JavaScript文件)注入页面。它可以在页面或布局模板onStart的PHP部分定义的函数中完成。例:

function onStart()
{
    $this->addCss('assets/css/hello.css');
    $this->addJs('assets/js/app.js');
}

如果在指定的路径addCss和addJs方法参数与斜线(/)开始那么这将是相对于网站根。如果资产路径不以斜杠开头,那么它与主题相关。

注入资产可以通过将它们作为数组传递

function onStart()
{
    $this->addCss(['assets/css/hello.css', 'assets/css/goodbye.css']);
    $this->addJs(['assets/js/app.js', 'assets/js/nav.js']);
}

LESS和SCSS资产可以使用组合器进行注入和编译:

function onStart()
{
    $this->addCss(['assets/less/base.less']);
}

为了在页面或布局上输出注入的资产,请使用{%styles%}和{%scripts%}标签。例:

<head>
    ...
    {% styles %}
</head>
<body>
    ...
    {% scripts %}
</body>
上一篇 下一篇

猜你喜欢

热点阅读