php - 第 5 行的 FOSUserBundle::layout.html.twig 中不存在变量 "error"

标签 php variables symfony

我正在网站上工作,但在转到“http://localhost/Tolkien_Bestiaire/web/app_dev.php/profile/”时出现错误'

错误:

"Variable "error" does not exist in FOSUserBundle::layout.html.twig at line 5"

我使用 FosUserBundle。

layout.html.twig :

{% extends "TolkienCoreBundle::layout.html.twig" %}

{% block body %}

    {% if error %}
        <div class="alert alert-danger">{{ error.message }}</div>
    {% endif %}

    <form action="{{ path('fos_user_security_check') }}" method="post" id="loginForm">
        <label for="username">Pseudo :</label><br/>
        <input type="text" id="username" name="_username" value="{{ last_username }}" class="col-md-4"/><br/><br/>

        <label for="password" class="col-md-12">Mot de passe :</label><br/>
        <input type="password" id="password" name="_password" class="col-md-4"/><br/><br/>

        <input type="submit" value="Connexion" class="col-md-4" />
    </form>

{% endblock %}

安全.yml:

    security:
  encoders:
    Tolkien\UserBundle\Entity\User: sha512

  role_hierarchy:
    ROLE_ADMIN:       [ROLE_AUTEUR, ROLE_MODERATEUR]
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

  providers:
    main:
      id: fos_user.user_provider.username

  firewalls:
    dev:
      pattern: ^/(_(profiler|wdt)|css|images|js)/
      security: false
    main:
      pattern:      ^/
      anonymous:    true
      provider:     main
      form_login:
        login_path: fos_user_security_login
        check_path: fos_user_security_check
        default_target_path: tolkien_bestiaire_home
      logout:
        path:       fos_user_security_logout
        target:     /tolkien
      remember_me:
        secret:     %secret%



  access_control:
    - { path: ^/admin, roles: ROLE_ADMIN }

CoreController.php (扩展到 layout.html.twig 的 Controller ):

    <?php

namespace Tolkien\CoreBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;

class CoreController extends Controller
{
    public function indexAction()
    {
        return $this->render('TolkienCoreBundle:Core:index.html.twig');
    }

    public function contactAction(Request $request)
    {
        $session = $request->getSession();
        $session->getFlashBag()->add('info', 'La page de contact n’est pas encore disponible, merci de revenir plus tard.');

        return $this->redirectToRoute('tolkien_core_home');

    }
}

谢谢:)

最佳答案

解决方案是将错误包装在另一个 if 中:

{% if error is defined %}
{% if error %}
... do something with error message
{% endif %}
{% endif %}

在 Login 的 Twig 模板中。

关于php - 第 5 行的 FOSUserBundle::layout.html.twig 中不存在变量 "error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567562/

相关文章:

php - 使用加入来显示轨道列表的轨道

variables - 如何在 Prolog 中一致地用变量替换原子?

html - Twig 之间渲染的隐形角色包括

php - 在 Symfony 2 中用户切换(模拟)后重定向

php - 请比较 Facebook Connect 与 Facebook (OpenID+Oauth)?

java - 将文件上传到服务器保存的文件包含无效字符

php - 如何使用 mysql db & slim 3 PHP 框架在同一个函数中执行 2 个查询

r - 如何在回归模型中每次添加一个变量?

java - 如何根据成员变量的值将对象添加到二叉树?

Nelmio Alice 的 Symfony 4 Fixtures 不持久