问题标签 [cakephp-3.8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
605 浏览

php - CakePHP 3.8 将数组转换为 Cake\ORM\Entity

我目前参与了一个 CakePHP 项目,但不知道如何将修改后的查询/数组传递给分页器。

这是我的控制器:

编辑:这是 fooFunction:

接受强制转换的_fooFunction数据库查询,进行一些调整,添加两个新属性并返回一个嵌套数组。它映射idparent_id获取孩子和级别描述。级别描述将用于视图中的缩进以显示分层顺序。

重要通知:我已经提防 CakePHP 中的 TreeBehavior,但问题是我们的数据库没有左/右字段,我无法添加它们。在这个项目中,我必须选择这种方式。但是$data包含我想要的内容,但我需要将其转换为兼容的分页对象。

编辑:感谢 ndm,我可以构建一个具有必要约束的可分页对象。我面前的最后一个问题是合并所有孩子和可能的子孩子。父母可以有第 n 个孩子,孩子有时也可以有第 n 个子孩子。因此,我通过在 fooFunction 中递归调用我的 _setOrderAndLevel 函数解决了这个问题。

这是当前的结构:

但应该是这样的:

我尝试构建第二个结果格式化程序,但它不起作用:

也许“combine->”调用可能是解决方案,但我不确定。欢迎任何帮助

0 投票
1 回答
91 浏览

cakephp-3.8 - 为什么我的插件没有在生产中加载?

我需要在我的应用程序的联系表单中实现 Google reCaptcha,所以我尝试安装一个简单的 reCaptcha 插件(这个插件似乎很简单:https ://github.com/agiletechvn/Recaptcha )。所以我按照说明进行操作。

我用 composer 安装它,用 bin/cake 插件加载它,验证有一个“$this->addPlugin('Recaptcha');” 在我的 Application.php 中并对我的控制器和视图进行了适当的更改。在 localhost 中,一切似乎都运行良好(并且 debugkit 告诉我插件正在正确加载),但是作为一个 reCaptcha 我无法测试它,除非它是一个实时服务器。所以我上传了所有文件(包括 vendor 中的相应文件夹和更新 cakephp-plugins.php 文件)。问题是它一直给我一个“找不到组件类 RecaptchaComponent”。错误。我错过了什么或放错了什么?

我的控制器:

我的观点:

我得到的错误:

错误:[Cake\Controller\Exception\MissingComponentException] 找不到组件类 RecaptchaComponent。(/home1/viajejuw/public_html/vendor/cakephp/cakephp/src/Controller/ComponentRegistry.php:101)

免责声明:我在生产服务器中没有可用的终端连接。

0 投票
0 回答
38 浏览

cakephp - 如何在 cakephp 连接表中应用 sum?

CakePHP 版本:3.8,数据库:PostgreSQL

我有两张桌子userstransactions. 事务表具有外键 user_id

我正在尝试汇总交易表中相应用户的所有金额。我试过像

我得到像这样的输出

{"id":72,"email":"test@gmail.com","2":null} .... ....

我的愿望输出

{"id":72,"email":"test@gmail.com","amount":2200}

我怎样才能得到我想要的结果?

0 投票
1 回答
70 浏览

php - 在 CakePHP 中提交之前如何在会话中保存当前 URL?

我有几个通过我的网站的联系表格。主要的(来自“联系人”部分)通过我的“客户”控制器中的一个动作来工作,我在其他页面中有几个其他表单(在其他控制器的视图中,我将表单发送到主控制器的操作,然后重定向到原始表单),一切正常。正在发送电子邮件通知,并将记录保存到我的数据库中。

问题是在我实现了 Recaptcha 插件之后出现的。该插件工作正常(如“如果你检查recaptcha,它会按预期工作;如果你不这样做,它会显示一条错误消息”),但是当我使用“辅助”表单时,而不是重定向回原始起始页面,它总是将我重定向到主控制器操作的页面(并且我在隐藏字段中丢失了我正在注册客户端当前使用的特定表单的信息)。

我尝试停用重定向,但这不起作用。用户仍然被“带到”主控制器的页面。

然后我搜索了一些解决方案(在谷歌和堆栈溢出中),在一个类似的问题中,有一个答案是“将您当前的 url 保存到会话中并加载它以进行重定向”,这是有道理的。但是,当我尝试保存它时,我发现会话在进程启动后被保存所以我的会话在跳转到主要操作之后保存 url,而不是在提交表单之前。

我尝试将会话保存在 beforeFilter 和 beforeRender 中,但它仍然不起作用。

在将表单提交到主要操作之前,我该怎么做才能将 url 保存在会话中?

我的主控制器的动作:

(recaptcha 插件在我的 AppController 的 Initialize 处加载。)

例如,另一个控制器视图中的一种形式,我正在调用主控制器的操作:

0 投票
0 回答
35 浏览

authentication - cakephp 3.8 在任何页面上登录,而不是重定向到登录页面

Normaly 使用 Auth 组件,如果用户未登录,则可以重定向到登录页面。但我认为可能有更好的方法不重定向,而是在需要登录的任何页面上都有一个模式弹出窗口用于登录. 但是如何在任何安全页面上查看弹出窗口,而不是将用户重定向到登录页面,然后加载并回调上一个页面?

0 投票
0 回答
186 浏览

authentication - cakephp 3.8.13 添加 admad/cakephp-jwt-auth

这个问题在堆栈溢出中被问了很多次,但我尝试了每个接受的解决方案

我是蛋糕 PHP 的新手,我被分配在我们的应用程序中添加 JWT。以前,团队使用默认的蛋糕会话。为了集成,我使用了admad/cakephp-jwt-auth. 所以在 AppController

我必须使用CbEmployees哪个是我们的用户模型。

然后在我的自定义控制器中,添加我的登录功能

然后我使用 postman 和 body 调用这个函数

我总是得到回应Invalid login details。所以建议的解决方案是检查密码数据类型和长度。密码是 varchar(255)。另一种解决方案是检查实体中的密码。在我拥有的实体中

我特别问为什么团队使用Security::hash($password, 'sha1', true);蛋糕 2 到蛋糕 3 他们必须使用相同的迁移。

为什么我总是得到Invalid login details?我在这里做错了什么?使用该应用程序时,我可以使用相同的凭据登录。

0 投票
1 回答
90 浏览

cakephp - cakephp 3.8.13 处理未经授权的请求,以 JSON 格式响应

我在我的 CakePHP 应用程序中实现了https://github.com/ADmad/cakephp-jwt-auth 。我的问题是每当有未经授权的请求时,它都会以 HTML 响应。

但是根据本教程https://www.bravo-kernel.com/2015/04/how-to-add-jwt-authentication-to-a-cakephp-3-rest-api/,它将以 JSON 响应。本教程的示例响应是

这是我的路由器

我该如何处理?我想要 JSON 中的未经授权的响应。谢谢你。

0 投票
0 回答
32 浏览

javascript - CakePHP scriptBlock 没有在 HTML 页面中添加任何 JavaScript

我只想在 HTML<script>标记中添加下面提到的 JavaScript。

但下面提到的 CakePHP 3.8scriptBlock函数并没有在我的 HTML 页面上创建任何元素。

请告诉我我该怎么办?

0 投票
1 回答
58 浏览

cakephp - CakePHP 多个脚本块 JavaScript 代码必须包含在一个 HTML 中