如何修改与auth相关的flash消息的外观?

How to modify the appearance of auth related flash messages?

我没有成功尝试将 AuthError 上的 Flash 元素从默认更改为错误?

我只是想看看我是否可以更改它,但现在它让我感到困惑,因为我似乎无法更改它?

这就是我在 AppController 中加载 Auth 的方式,

    $this->loadComponent('Auth', [
        'authError' => 'Did you really think you are allowed to see that? -2',
        'authenticate' => [
            'Form' => [
                'fields' => ['username' => 'email', 'password' => 'password']
            ]
        ],
        'loginAction' => [
            'controller' => 'Users',
            'action' => 'Login'
        ],
        'loginRedirect' => [
            'controller' => 'Pages',
            'action' => 'LoginPage'
        ],
        'logoutRedirect' => [
            'controller' => 'Pages',
            'action' => 'HomePage'
        ]
    ]);

因此,当我转到不允许的页面时,它会显示 authError 消息,但使用 Element/Flash/default.ctp 中的任何 class/id 我想将其更改为仅使用与error.cpt

我已经调试了 Auth 组件,有一个 'flash' 设置,尝试设置它,但它不起作用?

那么如何更改 authError 以使用不同的 Flash 布局?

谢谢,

我想我找到了解决办法。

好像我打印的时候$this->Flash->render('auth');

此时我需要将其更改为$this->Flash->render('auth',['element' => 'error']);

但是如果有人知道更好的方法,请告诉我

如您所想,auth 消息默认使用 default.ctp 元素,并且可以在直接呈现时配置 flash 元素。要在全局范围内影响这一点,您可以改为配置组件。

如果你只想改变类名,那么你可以在flash配置选项params设置中使用class参数:

$this->loadComponent('Auth', [
    // ...
    'flash' => [
        'params' => [
            'class' => 'some-custom-class'
        ]
    ]
]);

如果您想使用不同的元素,例如 error.ctp 元素,只需使用 element 设置指定其名称

    'flash' => [
        'element' => 'error'
    ]

另见 Cookbook > Controllers > Components > Authentication > Configuration Options

在 Cakephp 3 中,您可以为 flash 错误定义元素名称 -

$this->loadComponent('Auth', array(
    'authorize'=> 'Controller',
    'flash' => array(
        'element' => 'error'
    ),
    'authError' => 'Your session expired, please login again',
    'logoutRedirect' => array(
        'controller' => 'Users',
        'action' => 'login',
        'prefix' => false
     )
));

和 error.ctp 在 - \src\Template\Element\Flash\error.ctp