Php 使用slim+;细枝,扩展另一个模板的模板不能有主体

Php 使用slim+;细枝,扩展另一个模板的模板不能有主体,php,session,twig,slim,Php,Session,Twig,Slim,我正在用twig和slim创建一个网站,在尝试设置用户身份验证系统时遇到了一些问题 我使用的是标准的LAMP配置(mysql、php5、apache2),还有composer、twig和slim 我阅读了Tour教程,并认为我会做类似的事情,但不知道如何在我的应用程序中实现它。我遇到的问题是php会话部分。到目前为止,我只将php和PDO用于数据库连接(我用AJAX对.php文件进行了POST调用),但现在看来我实际上需要将php代码插入我的twig文件中 所以我试着这样做: {% extend

我正在用twig和slim创建一个网站,在尝试设置用户身份验证系统时遇到了一些问题

我使用的是标准的LAMP配置(mysql、php5、apache2),还有composer、twig和slim

我阅读了Tour教程,并认为我会做类似的事情,但不知道如何在我的应用程序中实现它。我遇到的问题是
php会话
部分。到目前为止,我只将
php
PDO
用于数据库连接(我用
AJAX
对.php文件进行了
POST
调用),但现在看来我实际上需要将
php
代码插入我的
twig
文件中

所以我试着这样做:

{% extends 'main.twig' %}

<?php
/*** begin our session ***/
session_start();
/*** set a form token ***/
$form_token = md5( uniqid('auth', true) );
/*** set the session form token ***/
$_SESSION['form_token'] = $form_token;
?>

{% block title %}
Sign Up | PTC Testers
{% endblock title %}

{% block stylesheet %}
<link rel="stylesheet" type="text/css" href="css/login.css">
{% endblock stylesheet %}

{% block content %}
<h1>Sign Up</h1>
    <form method="post">
        <fieldset>
            <p>
                <label for="email">Email</label>
                <input type="text" name="email" value="" maxlength="40" placeholder="john@example.com">
            </p>
            <p>
                <label for="password">Password</label>
                <input type="text" name="password" value="" maxlength="20" />
            </p>
            <p>
                <input type="hidden" name="form_token" value="<?php echo $form_token; ?>" />
                <input type="submit" value="&rarr; Login" />
            </p>
        </fieldset>
    </form>
{% endblock content %}
{%extends'main.twig%}
{%block title%}
注册| PTC测试人员
{%endblock title%}
{%块样式表%}
{%endblock样式表%}
{%block content%}
注册

电子邮件

密码

发件人:

Slim应用程序不假定任何会话。如果您更喜欢使用PHP会话,则在实例化Slim应用程序之前,必须使用session_start()配置并启动本机PHP会话

此外,您实际上需要的是一个

这意味着在index.php中,您的代码将类似于:

/*** begin our session ***/
session_start();

$app = new \Slim\Slim(array(
    'view' => new \Slim\Views\Twig()
));

$csrfTokenGenerator = function () {
    $form_token = md5( uniqid('auth', true) );

    $_SESSION['form_token'] = $form_token;
};

$app->get('/login', $csrfTokenGenerator, function() use ($app) {
    $app->render('login.twig');
})->name('login');
这就是说,Slim已经将此功能作为一个单独的包提供给您,值得一看