CakePHP 3 控制器事件实现示例

2024-01-13

CakePHP 3.0 文档包含如何使用模型创建事件的示例。我试了又试,但它不适合我。有谁有使用自定义事件的 CakePHP 3.x 示例,其中控制器在触发事件的控制器中设置变量?


假设我们有一个管理仪表板,您希望使用事件将一些代码注入其中,以便您可以将插件解耦,而不是将特定插件的仪表板功能硬编码到核心管理仪表板中。

创建事件的触发。

在APP/控制器/DashboardController中

public function index()
{
    // Once this gets to the function triggered by this event, the "$this" in the parameters will be $event->subject(). Mentioned again below.
    $event = new Event('Controller.Dashboard.beforeDashboardIndex', $this)
    $this->eventManager()->dispatch($event);
    // your other index() code...
}

现在创建一个等待该事件被触发的侦听器

一个好地方可能是 PluginName/src/Controller/Event/DashboardListener.php

namespace Plugin\Controller\Event;

use Cake\Event\EventListenerInterface;

class DashboardListener implements EventListenerInterface {

    public function implementedEvents() {
        return array(
            'Controller.Dashboard.beforeDashboardIndex' => 'myCustomMethod',
        );
    }

    public function myCustomMethod($event) {
        // $event->subject() = DashboardController();
        $event->subject()->set('dashboardAddon', 'me me me');
    }
}

最后打开监听器。 (例如,在 APP/config/bootstrap.php 的底部)

Note,此侦听器初始化可以在 DashboardController::index 之前触发的任何位置

// Attach event listeners
use Cake\Event\EventManager;
use PluginName\Controller\Event\DashboardListener;
$myPluginListener = new DashboardListener();
EventManager::instance()->on($myPluginListener);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP 3 控制器事件实现示例 的相关文章

  • 从 http 基本身份验证中排除特定的 cakephp 控制器

    我试图排除路径 URI 被基本 http 身份验证阻止 路径是 rest http example com rest 并代表 cakephp 3 应用程序的控制器 它不是一个真实的文件 而是一个由重写条件重写并由 webroot 目录中的
  • CakePHP 3.0 -> 查找条件之间

    是否可以执行 BETWEEN AND cakephp 2 5 中的条件类似于 cakephp 2 5 在 cakephp 2 5 中我写了类似的东西 conditions gt start date BETWEEN AND gt 2014
  • 如何比较条件中的两个字段/列?

    我很难弄清楚如何让子查询工作 想象一下我有 schools gt select this gt Schools gt select pupilcount gt this gt Pupils gt find gt select this gt
  • Cakephp:如何使用迁移插入记录

    我正在使用 CakePHP v3 x 我试图弄清楚如何通过迁移工具插入一些记录 文档仅列出修改架构的方法 我需要使用原始 SQL 手动插入记录吗 CakePHP 3 的迁移插件是一个 Phinx 包装插件 因此可以使用以下命令添加记录up
  • 如何为多列显示字段使用自定义格式?

    有谁知道扩展其 正常 用途的方法 它是id默认情况下 可以轻松更改为field1 我有一个显示字段集如下 this gt displayField name desc 显示为Name Description在模板文件中调用时 我知道这是一个
  • CakePHP 3 - 关联未定义 - 尽管它看起来是

    我使用 CakePHP 3 7 烘焙了一个遗留应用程序 数据库包含3张表 如下 regulations groups filters 就应用程序而言 层次结构是 Regulations Groups Filters 表架构如下 mysql
  • CakePHP 3 - 如何在验证 NotEmpty 之前使用 Trim()?

    我的表单验证空字段 但如果用户使用 空格 验证会处理一个字符 如何在模型表中使用 Trim 以避免发生这种情况 假设您在 Posts 表中有一个标题列 并且您想在验证之前修剪标题 将以下代码放入 src Model Table PostsT
  • 在 find('list') 中使用多个 valueField

    尝试在我的查找方法中使用多个字段 users this gt AdressesUsers gt users gt find list keyField gt id valueField gt firstname lastname 有效 有点
  • Cake PHP 3 debug_kit 面板

    安装 CakePHP3 版本后 3 6 2 debug kit不显示面板 在日志文件中 警告 DebugKit 正在禁用自身作为您的主机newtest my不在已知的顶级域安全列表中 localhost dev invalid test e
  • 以 Y-m-d 格式转换 cakephp 3 的时间对象

    我正在 cakephp 3 中工作 我想以 Y m d 格式打印我的时间对象 这是我的对象 expiry gt object Cake I18n Time time gt 2015 07 31T00 00 00 0000 timezone
  • 如何使用 CakePHP 3 在 find 中包含虚拟字段?

    我正在尝试为数据库中不存在的用户添加 isOnline 字段 有没有办法 In 可以返回 isOnline 作为虚拟字段 我尝试将其添加到用户实体中 protected function getIsOnline return true 但是
  • CakePHP 3:RESTful API 中的异常处理/序列化

    我正在使用 CakePHP3 构建 JSON RESTful API 但我不确定处理错误并向客户端提供有关错误的信息的最佳方法是什么 到目前为止 我的方法是 如果 例如 由于验证错误而保存实体失败 则抛出 HttpException 在我的
  • CakePHP 3 手动安装

    目前我使用 CakePHP 2 6 8 我想迁移到 CakePHP 3 安装指南 http book cakephp org 3 0 en installation html推荐使用Composer 但 Composer 并不能完成所有工作
  • 如何让 CakePdf 在 CakePHP 3.x 中工作?

    我已经安装了CakePdf https github com FriendsOfCake CakePdf插件放在 app plugins 文件夹中并遵循所有可能的文档 因此我的设置如下 config bootstrap php Plugin
  • cakephp 3 显示没有时间的日期

    CakePHP 3 我有一个数据库字段 它是日期 不是日期时间也不是时间戳 当我显示 echo contact gt date 它会显示类似的内容2014 01 06 0 00 如何隐藏小时和分钟 I tried print this gt
  • 登录后重定向至引荐来源网址不起作用

    用户登录后 我想将他们重定向回他们来自的地方 但它在 CakePHP 3 5 中无法正常工作 以下是帮助我解决这个问题所需的信息 登录时的 URL 会话超时 http dev scys com db admin redirect 2Fadm
  • cakephp 3.0 升级工具 - 无法理解文档 - 安装工具在哪里 - 升级文件夹 - 在哪里?

    我正在尝试将 100 个模型 数百个控制器和视图从 cakephp 2 6 7 转换为 cakephp 3 0 7 我已经使用升级 shell 工具尝试了以下操作 下载 zip 文件 放入项目主文件夹 即 cake 2 6 7 应用程序所在
  • CakePHP 3.0:如何在重复键更新时进行插入?

    我有一个数组 articles像这样 int 0 gt id gt 940039 xe dsca gt P2768G 1 xe citg gt 1F0200 xe cuni gt stk xe seak gt P2768G 1 xe sea
  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m
  • CakePHP 3 API 的 POST 请求不起作用

    我正在使用 CakePHP 3 x 文档开发 API 为了开发这个 API 我使用了他们的官方文档 https book cakephp org 3 0 en development rest html https book cakephp

随机推荐

  • 线性回归中使用的显式公式

    我有一个公式列表 我使用lapply and lm创建回归模型列表 然而 当我看到call每个线性模型的组成部分 我看到的不是显式公式 而是解析到线性模型中的变量的名称 例如 使用 mtcars 数据集 temp formula list
  • dlib (setup.py) 循环的构建轮子

    尝试从 Ubuntu 安装 dlib 和face recognition 参考自https www learnopencv com install dlib on ubuntu https www learnopencv com insta
  • 为什么 Win32 API 中不使用标准数据类型? [复制]

    这个问题在这里已经有答案了 我学习 Visual C Win32 编程已经有一段时间了 为什么会有这样的数据类型DWORD WCHAR UINT等等用来代替 比如说 unsigned long char unsigned int等等 我必须
  • 使用 TypeScript React prop 类型 - 如何拥有函数类型?

    是否有使用 TypeScript 来使用 React prop types 的函数类型的最佳实践 我以为这会起作用 但实际上它出错了 type Props onClick Function const Submit onClick Prop
  • 什么时候应该使用类,什么时候应该使用函数?

    什么时候类比函数更有用 有什么我应该知道的硬性或快速规则吗 它依赖于语言吗 我打算为 Python 编写一个脚本来解析不同类型的 json 数据 我的直觉是我应该使用类来完成此操作 而不是使用函数 当您的例程需要保存状态时 您应该使用类 否
  • 如何在linux(ubuntu)上更新ruby?

    我是 ruby 和 linux 的新手 所以我确信这是微不足道的 但我还不知道 我目前安装了 ruby 1 8 7 我想将其更新到 ruby 1 9 我怎样才能做到这一点 sudo apt get install ruby1 9 应该可以解
  • 将地图标记设置为自定义颜色 Android

    我正在制作一个应用程序 可以在地图的某些点添加图钉 我希望我的图钉颜色与我们应用程序的主题颜色相匹配 抱歉我真的是菜鸟 int color Color rgb 255 201 14 mMap MapFragment getFragmentM
  • 如何解决由内联命名空间中的标识符冲突引起的不明确引用

    考虑以下代码 include
  • git 存档与 cp -R

    如果我有一个 git 存储库的克隆作为远程服务器上的缓存副本用于 capistrano vlad 样式部署 那么最好执行 A git archive format tar origin master cd destination tar x
  • TortoiseHg - 如何在不先提交的情况下创建补丁

    当我想从未提交的更改创建补丁时 我真的必须首先提交吗 TortoiseHg 是否不允许在不执行提交的情况下创建补丁 TortoiseHg 2 0 2 在工作台中 您可以右键单击Working Directory行并选择Export Copy
  • R可以画图吗?

    我想知道 R 中是否有任何包可以使用 x y 坐标和形状大小来绘制如下内容 我有车辆前中心的坐标及其尺寸 长度和宽度 Edit 原始数据集如下所示 gt head df Vehicle ID Frame ID Global X Global
  • 使用drawInRect时UIImage Aspect Fill?

    我尝试像内容模式一样绘制scaleAspectFill 我找到了如何使用 AVFoundation 制作 sacelAspectFit 但我找不到scaleAspectFill 如果我绘制水平图像 我不知道 x 值 image draw i
  • 检查 php 中是否存在 url [重复]

    这个问题在这里已经有答案了 if file exists http example com images thumbnail 1286954822 jpg filefound 0 为什么这不起作用 if file exists http e
  • Raspberry Pi 的 QTMultimedia 编译

    我只需要从 Raspberry Pi 上运行的 QT 5 1 应用程序播放简单的音频 wav 或 mp3 文件 我的控制台应用程序已成功构建并部署到 pi 但是 当我尝试播放该文件时收到一条消息 defaultServiceProvider
  • 在 Typescript 中,我可以创建强制需要属性的映射类型吗?

    在 Typescript 中 我们有映射类型 可以将属性从一种类型映射到另一种类型 一个常见的示例是 Partial 类型 它使泛型类型上的所有属性都成为 可选 我想实现相反的效果 比如 必需 其中所有属性都被设置为 必需 而不管它们预先的
  • 基于事件类型的单元格的 jQuery Datepicker 背景颜色

    我需要根据活动类型或当天的预订是否已满 以不同的颜色显示不可用的日期 下面的示例从数据库中获取日期 并将它们作为数组传递给 JavaScript 目前我在数组中传递四个参数 2012 7 15 Some events 例如年 月 日和年 我
  • 如何从颤振中的坐标获取位置名称?

    我想要一个可以获取用户位置并使用 GPS 显示地名的按钮 I tried map view https pub dartlang org packages map view但它只能获取纬度和经度 use the geocoder https
  • ImportError:无法从“google.protobuf.internal”导入名称“builder”

    我正在关注 22点22分 发现这段代码有错误 python SCRIPTS PATH generate tfrecord py x IMAGE PATH train l ANNOTATION PATH label map pbtxt o A
  • 如何通过 XHR onProgress 函数使用压缩/压缩内容?

    我之前见过很多类似的问题 但我还没有找到一个能够准确描述我当前问题的问题 所以这里是 我有一个页面通过 AJAX 加载一个大的 0 5 到 10 MB 之间 JSON 文档 以便客户端代码可以处理它 加载文件后 我不会遇到任何意外的问题 但
  • CakePHP 3 控制器事件实现示例

    CakePHP 3 0 文档包含如何使用模型创建事件的示例 我试了又试 但它不适合我 有谁有使用自定义事件的 CakePHP 3 x 示例 其中控制器在触发事件的控制器中设置变量 假设我们有一个管理仪表板 您希望使用事件将一些代码注入其中