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

时间:2015-05-27 14:11:31

标签: php authentication cakephp view cakephp-3.0

我没有运气试图将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中的任何类/ id我想要将其更改为仅使用error.cpt < / p>

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

那么如何更改authError以使用其他Flash布局?

谢谢,

3 个答案:

答案 0 :(得分:4)

正如您所知,auth消息默认使用default.ctp元素,并且可以在直接渲染时配置flash元素。要全局影响,可以改为配置组件。

如果您只想更改类名,则可以使用class配置选项flash设置中的params参数:

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

如果您想使用其他元素,例如error.ctp,请使用element设置指定其名称

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

另请参阅 Cookbook > Controllers > Components > Authentication > Configuration Options

答案 1 :(得分:0)

我想我有一个解决方案。

当我打印$this->Flash->render('auth');

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

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

答案 2 :(得分:0)

在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