如何为一般 authError 消息定义 FlashHelper/Component 元素

2024-04-16

将 CakePHP 从 2.6.2 更新到 2.7.2 后,在创建 auth flash 消息时出现丢失密钥错误。如何定义默认的元素模板authError?

Since SessionComponent::setFlash()已经已弃用 http://book.cakephp.org/2.0/en/core-libraries/helpers/session.html#displaying-notifications-or-flash-messages我添加了Flash组件 http://book.cakephp.org/2.0/en/core-libraries/components/flash.html in app/Controller/AppController.php并修改了所有 Flash 消息:

// Controller
$this->Session->setFlash('Done', 'succeed');
$this->Session->setFlash('There is an error', 'failure');
$this->Session->setFlash('Please log in', 'auth');
// View (default Layout)
echo $this->Session->flash();
echo $this->Session->flash('auth');

to this:

// Controller
$this->Flash->succeed('Done');
$this->Flash->failure('There is an error');
$this->Flash->auth('Please log in');
// View (default Layout)
echo $this->Flash->render();
echo $this->Session->flash();       // keep temporarily?
echo $this->Session->flash('auth'); // keep temporarily?

我还复制了flash相关的模板App/View/Elements/succeed.ctp to App/View/Elements/Flash/succeed.ctp

这是有效的——but如果我是未登录并尝试访问管理页面,我得到默认值授权错误 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#AuthComponent::%24authError消息定义在app/Controller/AppController.php shown without相应的模板。使用调试模式 2 时出现以下错误:

// Undefined variable: key [CORE\Cake\View\Elements\Flash\default.ctp, line 1]
// include - CORE\Cake\View\Elements\Flash\default.ctp, line 1
// View::_evaluate() - CORE\Cake\View\View.php, line 971
// View::_render() - CORE\Cake\View\View.php, line 933
// View::_renderElement() - CORE\Cake\View\View.php, line 1227
// View::element() - CORE\Cake\View\View.php, line 418
// SessionHelper::flash() - CORE\Cake\View\Helper\SessionHelper.php, line 159
// include - APP\View\Layouts\default.ctp, line 142
// View::_evaluate() - CORE\Cake\View\View.php, line 971
// View::_render() - CORE\Cake\View\View.php, line 933
// View::renderLayout() - CORE\Cake\View\View.php, line 546
// View::render() - CORE\Cake\View\View.php, line 481
// Controller::render() - CORE\Cake\Controller\Controller.php, line 960
// Dispatcher::_invoke() - CORE\Cake\Routing\Dispatcher.php, line 200
// Dispatcher::dispatch() - CORE\Cake\Routing\Dispatcher.php, line 167
// [main] - APP\webroot\index.php, line 118
// Message" class="message">

要获得使用我自己的元素模板“auth”呈现的默认 authError,需要对 AppController.php 进行哪些更改?

这是 AppController.php 的部分:

public $components = array(
  'Flash',
  'Session',
  'Security',
  'Auth' => array(
    'authenticate' => array('Form' => array('passwordHasher' => 'Blowfish')),
    'authError' => 'My default auth error message.', // How do I have to modify this line?
    'loginAction' => array('controller' => 'users', 'action' => 'login'),
    'loginRedirect' => array('controller' => 'users', 'action' => 'welcome'),
    'logoutRedirect' => array('controller' => 'users', 'action' => 'goodbye'),
  )
);

当将所有控制器中的所有 Flash 消息更改为 Flash 组件和帮助程序时,这两行代码还需要吗? CakePHP 还用在什么地方?

echo $this->Session->flash();
echo $this->Session->flash('auth');

我也看了认证教程 http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html。但它似乎不是最新的$this->Session->setFlash()仍在大量使用...


在您的 Auth 组件设置数组中添加类似的内容

'Auth' = [
    ...
    'flash' => ['element' => 'auth_error'],
    ...
]

然后创建一个名为的模板auth_error.ctp在你的Element/Flash目录。在此文件中,您使用的唯一变量应该是$message,因为当 cake 从 Auth 组件调用 Flash 时,不会传递任何其他变量(即$key多变的)

也许这个答案不是100%正确(所以欢迎任何建议),但它对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为一般 authError 消息定义 FlashHelper/Component 元素 的相关文章

  • CakePHP Cookie 被打乱 - Suhosin 相关

    由于某种原因 在设置后 我无法在任何页面上读取 CakePHP 应用程序中的任何 cookie 唯一返回的是乱码文本 我的代码很简单 this gt Cookie gt write Region test reg this gt Cooki
  • 如何在 Cakephp 中发出 https post 请求

    我有一个要求 应用程序必须通过 HTTPS POST 进行 REST API 调用 我是 cakephp 的新手 我在想是否可以使用 httpsocket 进行 https 调用 我很感激任何帮助 Thanks 您可以使用其中任何一个 CA
  • CakePHP 2.0 $this->表单->input()

    这是我的add tcp 表名称 组 表字段 group id group desc PK group id 这是我的控制器 class GroupsController extends AppController public helper
  • 如何在控制器中使用辅助函数?

    我在 app helper 文件中编写了一些函数 现在我需要在我的控制器中调用该函数 我如何在 CAKEPHP 中做到这一点 你不能 如果您的函数非常通用 可以在视图之外使用 请在中创建它们bootstrap php或在中创建自定义库 类l
  • CakePHP 和子查询

    如何使用 cake 语法编写 SQL 子查询 我知道如何编写简单的查询 但无法处理子查询 这是原始查询 SELECT Assumption id Referee id Referee first name Referee second na
  • 使用 CakePHP 将视图嵌入到另一个视图中

    我有一个新闻控制器 每个新闻项目都有一个 查看 操作 在每个新闻项目的 查看 操作中 我想包含另一个视图 即评论控制器的 添加 操作 基本上 我需要在每个新闻项目的页面上添加一个表单来添加评论 我有两种观点 但我无法将它们联系起来 我尝试使
  • Cakephp 2.0 和基本身份验证

    我已将我的应用程序从 CakePHP 1 3 升级到 2 0 4 以前 我只能在一个控制器中使用安全组件来模拟基本 HTTP 身份验证 我曾经做过这样的事情 this gt Auth gt allow array this gt Secur
  • 在 cakephp 中使用本地化

    如何本地化 cakePhp 中的字符串 我在在线文档方面没有取得任何成功 谢谢你的帮助 有几个步骤 首先 设置要使用的区域设置 创建一个或多个 po该语言的文件 将所有支持 l10n 的字符串包裹起来 or d 辅助方法 以下是我的一个项目
  • 任何嵌入式文档查看器

    我希望在我的 CakePHP 应用程序中包含一个文档查看器 用于上传文档 我想要一个支持 Microsoft Word DOC 和 DOCX Microsoft PowerPoint PPT 和 PPTX 和 Adob e 便携式文档格式
  • 使用 CakePHP 分页助手进行引导分页

    我正在尝试让 CakePHP 的分页助手与 bootstrap 很好地配合 也就是说 我希望我的分页元素看起来像 bootstrap 的 但由 CakePHP 生成 目前我的视图页面上有这个 它产生以下标记 div class pagina
  • 在 cakephp 中分配布局

    我们可以在该特定控制器中为整个控制器定义一个布局吗 我之前已经在应用程序控制器的过滤器之前用于此目的 但它不再解决它 所以我需要在控制器中应该有一些适用于的布局定义该控制器的所有操作 Regards use it 在你的行动中 this g
  • isset() 或 !empty() 函数作用于视图中的所有变量?

    你好 我正在使用 CakePHP 我想知道你们是否在视图中的所有变量周围放置了 isset 或 empty 或者我应该依赖数据验证 建议的解决方案是什么 我想你应该知道之间的区别isset and empty并使用满足您需求的那个 empt
  • Cakephp 3 - 运行 phpunit 测试时出现 MissingDatasourceConfigException

    我正在尝试使用 PHPUnit 4 7 3 在 CakePHP 3 中运行一些单元测试 但出现以下错误 PHPUnit 4 7 3 by Sebastian Bergmann and contributors There was 1 err
  • CakePHP:以数组作为参数调用另一个控制器的操作的最佳方法?

    在控制器中 调用另一个控制器的操作并传递数组作为参数的最合适方法是什么 我知道您可以使用 requestAction 来调用其他控制器中的操作 但是是否可以使用请求操作将数组作为参数传递 不 我不想将操作放入应用程序控制器中 所以这对我来说
  • cakephp render-false 操作仍然回显 html 模板

    对于控制器中不需要视图的操作 我将禁用布局和模板 如下所示 this gt autoRender false 一切都很好 然而 在同一操作中 我会回显 通过 或 失败 来表明我对结果的看法 问题是一堆文本也被回显 我的 失败 或 通过 在最
  • cakephp - 获取表名称及其列详细信息

    有谁知道如何从模型名称获取表名称 另外我想获取该模型 表名称的所有列名称及其类型 是否有可能获得给定型号名称的此类详细信息 Thanks 表名 要获取该表 请参阅 this gt Model gt table 或者检查类变量的模型 useT
  • Cakephp 递归条件下的分页

    我对这个问题很生气 请有人帮助我 我有这个模型 订单有很多 gt 订单项有一个 gt 产品 产品有字段vendor id 我想对包含具有特定供应商 ID 的产品的订单进行分页 我怎样才能实现这个目标 我在订单控制器中的代码 if empty
  • Cakephp 图像 - 无法确定 mimetype

    蛋糕PHP 2 3 我正在上传图像 但出现错误 Can not determine the mimetype Error An Internal Error Has Occurred 在我的模型上 这是我的 validation 的一部分
  • CakePHP 后退和前进按钮没有布局

    我们正在 CakePHP 中构建一个大型 CMS 并集成了 Croogo 安装 我们最近遇到了一个问题 当用户单击back在浏览器中 或forward按钮 您最终得到的是使用以下命令的视图 ctp 文件blank布局 所以没有样式 js 等
  • 将变量从 PHP 传递到 JavaScript 的有效方法[重复]

    这个问题在这里已经有答案了 有时我必须将一些变量从 PHP 传递到 JS 脚本 现在我是这样做的 var js variable 但这非常丑陋 我无法在 js 文件中隐藏我的 JS 脚本 因为它必须由 PHP 解析 处理这个问题的最佳解决方

随机推荐

  • 如何获取从标准 UIViewController 中调用的 UIWebView 的 UIScrollView 委托方法?

    所以我只有一个标准的 UIViewController 其中有一个显示 pdf 的 UIWebView 对于应用程序功能 我需要能够响应 UIWebView 的嵌套 UIScrollView 事件 例如scrollViewWillBegin
  • 使用 Hive 自定义输入格式

    Update 好吧 事实证明以下不起作用的原因是因为我使用的是较新版本的InputFormat API import org apache hadoop mapred这是旧的与import org apache hadoop mapredu
  • 跳出选择循环?

    我正在尝试使用select在循环中接收消息或超时信号 如果收到超时信号 则循环应中止 package main import fmt time func main done time After 1 time Millisecond num
  • Android 使用前置摄像头拍照

    这是我第一次使用相机 我已经阅读了很多示例和文档 所以我尝试创建自己的类来使用前置摄像头拍照 这就是我想出的 public class CameraController private Context context private boo
  • 如何使用 Active Support 核心扩展

    我安装了 Active Support 3 0 3 和 Rails 3 0 3 with Ruby 1 8 7 当我尝试使用时1 week ago I get NoMethodError undefined method week for
  • 是否可以针对 noSQL DB 构建复杂的查询

    我一直在研究 noSQL DB 但未能为自己满意地回答这个问题 是否可以针对 noSQL DB 构建复杂的查询 我想知道的查询类型是这样的 select from DB where vara gt x AND varb 2 AND varc
  • 无法添加日期选择器选项?

    我有一个表单 它动态创建一个带有几个表单输入的新行 其中一个输入附有一个日期选择器 我刚刚在这里的帮助下成功完成了这项工作 除了还剩下一个问题 当我想向日期选择器添加选项时 它就会停止工作 工作小提琴 http jsfiddle net H
  • 无法使字段“属性”可访问;更改其可见性或为其声明类型 gSON fromJson 编写自定义 TypeAdapter

    我有一个名为游戏的课程 public class Game private String name private int id private GameFields gameFields Expose deserialize false
  • Clang 标志的完整列表

    在哪里可以找到 Clang 标志的完整列表 有一些 比如 include pch 这似乎没有在手册页中列出 我知道 GCC 使用一些相同的标志 但它不包括类似的文档 Os我相信这仅在 Clang 中可用 是否有地方可以找到所有 Clang
  • 使用 R 中的 drc 包回归​​多个剂量反应曲线

    我试图通过我的实验数据拟合回归 4 或 5 PL 我有几种化合物可以抑制我感兴趣的酶 每个都有其自己的 0 100 酶活性范围 所有数据都在一个数据框中 并通过指定我的化合物 毒素 的一列进行区分 因此 我想对每种毒素 化合物分别进行回归
  • VS2015:应用程序无法正确启动(0xc000007b)

    我在 Visual Studio 2015 上为 Windows 10 PC 编写了代码 该应用程序主要关注 UDP 通信 我使用 boost 库 它工作正常 但当我将代码文件夹移至 Windows 7 时 我收到错误 应用程序无法正确启动
  • SwiftUI View 协议中的EnvironmentObject

    我想制定这样的协议 protocol SubscriptionManagerView View var subscriptionManager EnvironmentObject
  • python装饰器,嵌套函数[重复]

    这个问题在这里已经有答案了 我试图弄清楚为什么在使用装饰器时我需要一个嵌套函数 这是一个例子 def func f def deco args kwargs return f args kwargs return deco func def
  • Numpy/ Pandas/ Matplotlib 安装时间太长

    我已经决定安装 MacOs Big Sur 现在我必须再次重新安装所有软件包 但我遇到了一些问题 我没有太多使用终端的经验 但安装一些数据科学库需要很长时间 例如 安装 numpy 花了几分钟 而现在 自从我开始尝试安装 pandas li
  • 在 Jade 中使用 HTML 被认为是不好的做法吗?

    Jade 看起来像一个很酷的模板引擎 我想我将在下一个项目中使用它 然而 有些语法对我来说没有意义 这样做你会得到什么 ul li a href book a Book A 代替 ul li a href book a Book A a l
  • 为什么使用互斥量而不是布尔变量进行线程同步?

    我正在尝试了解 C 中的多线程编程 我有疑问 既然我们使用MUTEXES来进行线程同步 为什么我们不能使用布尔变量来阻塞要执行的代码的关键区域 与布尔变量相比 静音变量有何特点 PS 其实这个问题是在采访中问到的 因此 请分享您对此的了解
  • 可用 Wifi 设备列表

    我想显示可用 Wifi 设备的列表 这是我的代码 我不明白这里有什么错误 wifi WifiManager getSystemService Context WIFI SERVICE if wifi isWifiEnabled false
  • 如何向 AWS 根账户 MFA 添加更多设备

    我的 iPhone 中已经安装了 Google 身份验证器 并且正在使用它登录我的 AWS 根账户 我想添加使用我的 Android 手机通过 MFA 登录的功能 并使用相应的令牌生成器 Android 应用程序 是否可以添加第二个设备以及
  • 具有多个参数的 Laravel FindOrNew

    我使用 laravel FindOrNew 来获取具有两个参数的条目 或创建一个新参数 option App Option findOrNew user id gt this gt id option name gt optionName
  • 如何为一般 authError 消息定义 FlashHelper/Component 元素

    将 CakePHP 从 2 6 2 更新到 2 7 2 后 在创建 auth flash 消息时出现丢失密钥错误 如何定义默认的元素模板authError Since SessionComponent setFlash 已经已弃用 http