wisembly/silexcms

基于Silex的轻量级CMS

0.2.7 2014-01-31 08:52 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:29:36 UTC


README

关于

本项目旨在提供一个最小化工具集,帮助创建企业网站。使用 Silex 作为主要框架,它包含多个简写类。

版本

0.1.0

示例

我们使用SilexCMS为我们自己的企业网站。您可以在wisembly.com上看到它的工作状态,并查看github.com/wisembly/wisembly。

文档

页面

有两种类型的网页:静态和动态。

静态页面不依赖于其他任何东西,只依赖于它们的模板。动态页面在其URL中接受参数,获取一个表,然后渲染指定的模板,并将结果对象存储在一个可访问的变量中。

静态页面

$app->register(new SilexCMS\Page\StaticPage('/', 'home.html.twig'));

动态页面

$app->register(new SilexCMS\Page\DynamicPage('/product/{slug}', 'product.html.twig'));
{% if app.set not none %}
    Our product is called {{ app.set.name }} :)
{% else %}
    Product not found :(
{% endif %}

数据集

数据集是一个简单便捷的方法,可以直接在Twig模板中检索数据库数据。首先,为您的应用程序注册可用的数据集

$app->register(new DataSet('twig_name', 'table_name'));
$app->register(new DataSet('users', 'user'));

然后,在您的Twig模板中使用它们

{# Tell in your template that you will need users DataSet loaded in app #}
{% bloc users %}{% endbloc %}

{# Then use it freely in your template in app var #}
First user name: {{ app.users[0].name }}

Users emails:
{% for user in app.users %}
  email: {{ user.email }}
{% endfor %}

键值集

键值集是一个简单便捷的方法,可以直接在Twig模板中从数据库中检索键 => 值集。它们像上面的数据集一样工作,但允许在模板中不同的方式访问值。

$app->register(new DataSet('twig_name', 'table_name', 'key_name'));
$app->register(new DataSet('messages', 'messages', 'key'));

对于以下集合

| key | value |
| foo | bar   |
| bar | baz   |

在您的模板中,您可以这样做

{% bloc messages %}{% endbloc %}

{# will output "bar" #}
foo value is: {{ app.messages.foo }}

外部的Twig扩展

SilexCMS提供了一个Twig扩展,可以轻松通过id引用在数据集中检索特定对象

首先,加载外键扩展

$app['twig']->addExtension(new \SilexCMS\Twig\Extension\ForeignKeyExtension($app));

然后,在您的Twig模板中使用它

{% block books %}{% endblock %}
{% block categories %}{% endblock %}
{% set category = foreign(app.categories, app.books[0].category_id) %}
The 1rst book category is: {{ category.name }}

安全

安全类提供了一个非常简单的方式来识别某些用户。

在实例化防火墙时,您只需要提供一个名称和包含您的用户认证信息(键将是用户名,值是纯文本密码)的数组。将在变量 app[name] 中自动创建一个日志实例。

从那时起,您可以使用这个记录器来检查当前用户状态或更改它。

手动示例

$app->register(new SilexCMS\Security\Firewall('main', array('user' => 'pass')));

var_dump($app['main']->getUsername()); // null
$app['main']->bindUsername('user');
var_dump($app['main']->getUsername()); // "user"

请求示例

如果请求至少有两个参数: _username_password,您还可以绑定请求。

startup.php
$app->register(new SilexCMS\Security\Firewall('security', array('user' => 'pass')));

$app->register(new SilexCMS\Page\StaticPage('/login', 'login.html.twig'));
$app->register(new SilexCMS\Page\StaticPage('/login/success', 'login/success.html.twig'));
$app->register(new SilexCMS\Page\StaticPage('/login/failure', 'login/failure.html.twig'));

$app->post('/post', function (Application $app, Request $req) {
    $security = $app['security'];

    if ($security->bindSession()->getUserName() || $security->bindRequest($req)->getUserName()) {
        return $app->redirect('login/success');
    } else {
        return $app->redirect('login/failure');
    }
});
login.html.twig
<form action="/login" method="post">
    <input type="text" name="_password" /><br />
    <input type="password" name="_password" /><br />
    <input type="submit" />
</form>

许可

SilexCMS遵循MIT许可。