问题标签 [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 回答
1812 浏览

datetime - cakephp 3.8.8 将字段截止日期保存为日期时间时,无法将“字符串”类型的值转换为整数

Cakephp 不保存日期字段的选定值我的表单字段如下:

我可以使用数据库中的现有任务编辑和更改日期,但是当我添加新任务时,我遇到了按摩错误:

在表格模型中,我有:

堆栈跟踪:

0 投票
2 回答
553 浏览

php - jQuery ajax 调用无法从 CakePHP 3.8 读取 json 编码数据(获取一个空数组)

我在读取我的 CakePHP3 API 返回的 json 编码数据以响应来自 jQuery 的 ajax 调用时遇到了一个奇怪的问题。我已经阅读了关于 stackoverflow 和其他地方的 20 多篇文章,以及人们遇到的常见问题,原因是错误的 dataType、contentType 或服务器没有从 ajax 获取数据。这些情况都不适用于这里(我尝试了不同的设置,但对我的问题没有影响)。

问题:

我的 ajax 调用向我的 CakePHP3 API 发送一些参数,API 正确获取参数并返回 CakePHP 实体的 json 编码数组(每个实体在发送回 ajax 调用之前添加了一个附加属性“available_yield”)。我在浏览器中使用直接 URL 获得了正确的输出(使用 json 验证器进行了检查,一切都很好),但是我的 ajax 调用(我在 Chrome devtools 中使用控制台和网络选项卡进行调查)显示了一个空数组,用于格式良好json。

我的调查表明,当我修改 CakePHP 实体时会出现问题。如果我从 API json 编码返回原始数据,jquery ajax 将获得正确的数据。但是当我修改任何实体时,jquery ajax 中的数组是空的。

从 CakePHP 调试显示,两个数组(未修改和已修改)看起来完全相同,除了添加的属性,即它们格式正确且在所有方面都可以,都在 json 中,在浏览器中都可以。但是jquery不接受修改后的json作为json。

目前的解决方案似乎是:不要修改您的数据!但这就是我们在将相关和处理过的数据发送到客户端之前在服务器上所做的事情,不是吗?

有没有人遇到过类似的问题?

我附上我的代码:

CakePHP API 函数:

我的 AJAX:

从 API 返回的 JSON 数据:

编辑: 可能很重要: 当我在浏览器中通过 URL 访问 API 时,它总是返回修改后的数据;看起来我的代码修改了 $matchingCrops 集中的实际实体。因此,如果将 $content 设置为 $matchingCrops 或 $cropsWithYieldInfo,浏览器中的结果总是相同的。但是通过 ajax 访问 API 时会有所不同:当 $content = json_encoded($matchingCrops) 我得到原始未修改的数据数组时,当 $content = json_encoded($cropsWithYieldInfo) 我得到一个空数组。

这真的很奇怪:为什么浏览器总是得到修改后的数组,而 ajax 得到一个或另一个???我知道如果我修改 $crop 实体,那么它会修改结果集中的实体,但我希望这对于浏览器和 ajax 调用都是一致的。

编辑:我尝试了一个稍微修改过的代码,看看克隆实体是否会产生任何影响,但唯一的区别是现在浏览器得到了我期望发生的事情(原始未修改的数组或修改过的数组)并且它与什么一致阿贾克斯得到。但这并不能解决问题(如果数组被修改,ajax 仍然会得到空数组)。

修改(ajax 将此作为空数组;浏览器始终从 API 获取):

未修改(ajax 正确理解):

0 投票
0 回答
170 浏览

cakephp - 预期类型“Cake\Datasource\EntityInterface”。找到“应用\模型\表\实体”

实际上,我不确定这是否是我的代码或 intelephense 的问题。

在我的UsersTable我有一个方法,给定 a user_id,获取用户的数据(通过调用另一个方法)并重新找到。这是代码:

现在,一切似乎都正常工作,除了我的 IDE 强调了$userin$this->save($user)和 intelephense 指向这个错误:

Expected type 'Cake\Datasource\EntityInterface'. Found 'App\Model\Table\entity'.

这是为什么?难道我做错了什么?

0 投票
1 回答
50 浏览

cakephp - CakePHP 3.x 翻译行为:使用“get”读取所有翻译

食谱描述了如何检索实体的所有翻译,但它使用的是find('translations'). 它还讨论了如何检索关联的所有翻译。我希望将这些、使用get和包含功能融合在一起,因为我已经在同时读取相关记录。

要加载一个联赛和所有相关的部门及其翻译,这很有效:

到目前为止,一切都很好。但我还需要加载联赛的所有翻译。这有效:

但它与我用于读取单个实体的所有其他代码不一致,该实体始终使用get. 我试过这个:

但它会导致“错误:无法使用闭包类型的对象作为数组” EagerLoader::normalized

我是否遗漏了一些明显的东西(或不那么明显的东西?),或者这不是一个受支持的选项?

0 投票
1 回答
734 浏览

cakephp - 如何解决 Composer 依赖升级到 CakePHP4?

我正在按照将 CakePHP 项目移动到版本 4 的升级说明进行操作。一切顺利,直到最后的命令:

php composer.phar 需要 --update-with-dependencies "cakephp/cakephp:4.0.*"

这导致

问题 1

  • cakephp/bake 1.11.2 需要 cakephp/cakephp ^3.8.0 -> 可满足 cakephp/cakephp[3.8.0, >>3.8.0-RC1, 3.8.0-RC2, 3.8.0-RC3, 3.8.0- β1、3.8.1、3.8.10、3.8.11、3.8.2、3.8.3、3.8.4、>>3.8.5、3.8.6、3.8.7、3.8.8、3.8.9、3。 x-dev] 但这些与您的要求或 >.minimum-stability 冲突。
  • cakephp/bake 1.11.2 需要 cakephp/cakephp ^3.8.0 -> cakephp/cakephp[3.8.0, 3.8.0-RC1, 3.8.0-RC2, 3.8.0-RC3, 3.8.0-beta1, 3.8.1、3.8.10、3.8.11、3.8.2、3.8.3、3.8.4、3.8.5、3.8.6、3.8.7、3.8.8、3.8.9、3.x-dev]但这些与您的要求或最低稳定性相冲突。
  • cakephp/bake 1.11.2 需要 cakephp/cakephp ^3.8.0 -> cakephp/cakephp[3.8.0, 3.8.0-RC1, 3.8.0-RC2, 3.8.0-RC3, 3.8.0-beta1, 3.8.1、3.8.10、3.8.11、3.8.2、3.8.3、3.8.4、3.8.5、3.8.6、3.8.7、3.8.8、3.8.9、3.x-dev]但这些与您的要求或最低稳定性相冲突。
  • cakephp/bake 的安装请求(锁定在 1.11.2,需要为 ^1.9.0)-> cakephp/bake[1.11.2] 可满足。

该项目的 VERSION.txt 显示 CakePHP 在 3.8.11。

在 composer.json 文件中:

0 投票
1 回答
429 浏览

cakephp - 在查询构建器中从日期时间过滤日期(CakePHP 3)

我的模型中有一个datetime字段。在查询中,我想选择在特定日期/日期创建的所有行(时间无关紧要)。在 CakePHP 3.8 中最简单的方法是什么?

0 投票
0 回答
24 浏览

php - CakePHP 3 编辑表单未填充数据库对象

我已经在 CakePHP 中构建了相当多的具有编辑(更新)功能的应用程序。我遇到了一个我以前没有遇到过的问题,即使数据从数据库返回并且字段名称匹配,Cake 也没有填充一组表单字段。

在控制器方法中,我正在获取数据:

如果我这样做,debug($data);我可以看到数据正在从数据库返回并且是一个对象:

然后我习惯$this->set(compact('data'));将这些数据传递给我的模板。这似乎与其他控制器edit()方法相同,包括那些已经烘焙的方法。

我正在使用表单助手并且字段名称与上面对象中的键匹配,例如

表单已呈现,但字段为空。

我确实注意到的一件事是,这是一个遗留应用程序,并且从中获取此数据的表没有id字段。主键是invno,这是一个字符串(varchar在 MySQL 中)。但这已在 Table 类中定义:

add()我通过控制器中的方法插入数据没有任何问题。但是当涉及到编辑时,它并没有填充表单,我不明白为什么。

CakePHP 版本是 3.8.12

0 投票
0 回答
127 浏览

cakephp - 无法让 CakePHP 3.8 多文件上传工作

我正在做这个项目,起初它有一个非常好的单个文件上传,但不得不更改为多个文件上传,现在我无法让它工作!收到“标题已发送”错误:

这是我的代码:add.ctp

[...]

验证成立于AtividadesTable.php(这是该字段的唯一出现):

我尝试了几种解决方案,我在互联网上找到了这些解决方案,但没有一个对我有帮助。我在 PHP 7.2.31 上使用 CakePHP 3.8.11。

这是我composer.json安装的模块(不知道是否有帮助):

由于我无法完成这一步,我假设现在,我的控制器是无关紧要的。我能做些什么?


编辑:06/04(由Salines询问)

多文件上传(上传4个文件)

使用

输出

单个文件上传

使用

输出

多文件上传(上传4个文件)

使用

输出

多文件上传(上传4个文件)

使用

输出

Atividades控制器

我将展示我的AtividadesController.php(添加方法):

我错过了什么吗?一些 CakePHP 组件,也许吧?一些 PHP 扩展?

0 投票
1 回答
38 浏览

authentication - 尝试使用 CakePHP 3.8 构建一个简单的 Auth

你好吗?我试图弄清楚为什么这不起作用...查看互联网,最常见的答案是我的数据库的密码字段大小错误,但我的是varchar(255).

继续获得false回报$user = $this->Auth->identify();

我的代码:

应用控制器:

用户控制器:

用户(模型实体):

看法:

0 投票
1 回答
87 浏览

cakephp - 如何替换 cakephp 3 中的 sanitize 类?

目前,我正在将 cakephp 从 2.10 升级到 3.8,我注意到 Sanitize 类已被删除。有谁知道如何更换它?

我有以下功能: