如何修改与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
我没有成功尝试将 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