问题标签 [cakephp-3.1]

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 投票
0 回答
95 浏览

cakephp - 如何报告非列输入字段的错误

我有一个用于创建一批事件的表格。它有名称、描述、位置、开始和结束时间的输入,所有这些都是事件表中的列。它还有许多日期输入,使用字段名称,如dates.0.date,dates.1.date等。

保存过程循环通过提交输入中的日期数组,创建一个包含其余数据和每个数据的日期的实体,并保存它。也就是说,生成的实体将具有名为名称、描述、位置、开始、结束和日期的字段。(希望这很清楚!)这部分工作得很好,它被包装在一个transactional函数中,因此只有在全部成功时才会保存事件。

问题是提供了无效的日期。实体未保存,错误正确位于$e->errors('date'). 但我不知道如何按日期向用户报告该错误。从实体文档推断并使用其他地方标准的点表示法,我已经尝试过,并确认在呈现视图时(即,如果我使用)$event->errors("dates.$i.date", $e->errors('date'));,任何此类错误都保留在实体的错误列表中。debug($event->errors());但是当我创建输入字段时,没有错误日期的错误消息。他们都有提交的值,只是没有错误。

尝试使用“日期”而不是“日期”作为字段名称的基础(例如,date.0.date而不是dates.0.date),以查看它是否由于“日期”不是表中的列而跳过错误检查,但这只是导致了在我验证其余数据时出现验证错误,因此我没有进一步寻求该选项。

我在其他地方有一些代码在关联实体上设置错误,如果翻译成这种情况,看起来像$event->dates[0]->errors($e->errors('date'));,但$event与称为日期的东西没有关联,所以我不知道如何在这里工作。我尝试dates在实体中创建为数组$event,但分配$event['dates'][$i] = $this->Events->newEntity(...);会导致 PHP 警告:“间接修改重载元素无效”,并且实体被丢弃。也许手动创建一些 ArrayContext 对象并将错误分配给它?如何做到这一点对我来说不是很明显。

0 投票
2 回答
629 浏览

php - 如何检查控制器 CakePhp 3 中设置为允许的页面?

我有一个我正在尝试创建的注销功能,它将检查当前页面是否允许注销用户。如果是,我将留在页面上,如果不是,我将重定向到主页。我想知道如何检查当前页面是否被允许。我可以检查他们是否获得了以下代码的授权:

但我无法检查当前页面是否允许:

0 投票
1 回答
3077 浏览

php - 在浏览器窗口关闭后保持用户登录状态

在我的app.php我有:

我想要实现的是让用户无论他们的行为如何都可以登录。这意味着用户应该保持登录状态 2 周,除非他选择手动注销。关闭浏览器窗口不应注销服务器。

现在,当我关闭浏览器窗口时,它会注销用户。

我怎样才能防止这种情况?

0 投票
2 回答
948 浏览

php - 使用 newEntities() CakePhp 3.x 保存多条记录时如何获得验证?

出于某种原因,我在保存多条记录时没有收到任何验证错误。我可以使用 print_r($user->errors()); 但它们不会像添加单个用户时那样自动注入表单中。根据文档“在使用 newEntity()、newEntities() 时自动完成保存前的验证实体。” 我不确定是否有特定的方法来设置表单以使其返回多个记录的验证,或者您是否必须在模型中对具有索引的输入进行特殊验证或什么?

看法:

控制器:

桌子:

公共函数初始化(数组$config){父::初始化($config);

0 投票
1 回答
549 浏览

cakephp - CakePHP 3.1 中的烘焙插件缺少控制器错误

我重新安装了 CakePHP 3.1。然后我烤了一个插件。然后我烘焙了一个插件控制器。

按照文档中的示例完成:http: //book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins

但是当我转到 /cake-cms/cake-cms 时,我得到一个缺少控制器的错误。

烘焙的代码对我来说都很好。烘焙插件 routes.php 正在执行(我用 exit 测试过;)。烘焙控制器存在于:/plugins/CakeCms/src/Controller/CakeCmsController.php 但 CakePHP 并没有在那里寻找。

文档中的示例说它应该可以正常工作。

0 投票
0 回答
173 浏览

php - 实现 FriendsOfCake\Search 以使用 CakePHP 查询日期范围时出现致命错误

我正在尝试FriendsOfCake\Search在 CakePHP 中实现插件。我不能 100% 确定我是否正确实施了搜索类型,但是当我提交表单以尝试使用日期进行搜索时,我收到以下致命错误:

错误:在非对象上调用成员函数 format()

我假设在某个地方我的日期没有被格式化为日期对象,但不确定我需要在哪里做,如果有的话。这是我正在使用的代码片段。

UsersTable.php - 在我的searchConfiguration()方法里面

index.ctp - 我的表单的生成

我想就是这样,我有文本框和选择框作为表单的一部分,这只是我无法启动和运行的日期。

这是错误消息的堆栈跟踪(我相信这是所要求的,它是我页面的左侧列。

完整的错误块说:

DataTimeType.php 的第 94 行是 toDatabase() 方法的一部分。它正在尝试将日期时间对象转换为与数据库一起使用的字符串。特别是第 94 行

使用 Cake 3.1.0 版

0 投票
1 回答
1609 浏览

php - 如何使用适用于 CakePHP 3.1.0 的 FriendsOfCake 搜索插件过滤关联数据

插入:FriendsOfCake\Search

我目前正在添加在该index()方法上过滤我的 Orders 控制器的功能。我需要能够在下订单的用户的姓名中搜索订单。每个订单都与Users模型相关联:

当我在文件中构建我的searchConfiguration()方法时,OrdersTable.php我有以下内容:

订单 index() 方法

当我没有将任何参数传递给查询时,这加载很好,但是,一旦我尝试搜索first_namelast_name我得到错误:

错误:SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列'Orders.Users.first_name'

根据错误,它正在附加订单。到我要搜索的字段。据我所知CakePHP,有两种方法aliasField()之一\var\www\<project_name>\vendors\cakephp\cakephp\src\ORM\Query.php

还有一个在\var\www\<project_name>\vendors\cakephp\cakephp\src\ORM\Table.php

看起来这Query.php将允许您$alias为该字段指定,但是,Table.php 没有,所以我假设这就是这里使用的方法。

谁能指导我如何过滤关联表中包含的数据?

0 投票
1 回答
230 浏览

php - Cakephp3:AppController 中的 $this->Auth->user('id')

我在 AppController 中使用 $this->Auth->user('id') 时遇到了一个问题。它返回以下错误:错误:在 null 上调用成员函数 user()

现在我想做的是:我想强迫每个人都获得正确的个人资料。所以我在 AppController 中创建了函数 forceprofile()。我要求在过滤器功能之前在 AppControllers 中执行此功能。所以每次都会执行。当没有配置文件时,用户将从 forceprofile-function 重定向到一个表单,他可以在其中保存他的配置文件。

在这个 forceprofile-function 的第一行代码中,在一些注释之后,我将 UserID 放入一个变量中:

这是发生错误的地方。

比我想看看那里发生了什么,我把这条线换成了

结果是:

整数(1)

所以实际上我在那里得到了一个非常合适的结果。

原始故障的堆栈没有提供任何有用的信息,它只是打印 [internal function] 没有任何上下文或代码......它打印 BaseErrorHandler。

任何人都知道,为什么 debug() 返回正确的结果而要求将 id 分配给变量不?

谢谢您的帮助。

0 投票
0 回答
151 浏览

validation - CakePHP 3.1:我对翻译行为字段的验证,在审查/评论中需要一些帮助

基于此线程,我研究了一个钩子来验证我的翻译字段:https ://stackoverflow.com/a/33070156/4617689 。我已经做到了,但我正在寻找你们来帮助我改进我的代码,所以请随时评论和修改

我对我的 $data 技巧并不感到自豪,但我还没有找到将验证器的数据放入我的nestedValidator 的方法......

这里的重要部分是要注意,我的nestedValidator 只对“翻译”进行规则,这非常重要!

这里是 I18ns 工作的基础

使用那个 formHelper,我们会得到 nestedValidation 的错误并将它们注入到输入中,我对模板不满意,所以这就是它非常难看的原因。

当 type_id 未设置为 Type::TYPE_HOMEPAGE 时,此处需要我的 fr_FR.slug,是的,我的主页没有 slug,请注意根本不需要 en_US.slug,因为我只需要 'translations.xx_XX.xxxx' 而不是'_translations.xx_XX.xxxx'。

以及代码的最后一部分,控制器

这是我这边的最终结果的 .gif:http: //i.giphy.com/3o85xyrLOTd7q0YVck.gif

0 投票
3 回答
10798 浏览

cakephp - CakePHP 3:找不到类“配置”

我昨天刚开始使用 CakePHP v3.1.3,我正在一次迁移我的 CakePHP 2.4.2 站点的一小部分。主要是想了解这些变化。我有一个问题Configure::read()

一些背景信息:我的数据库中有SettingsSiteSettingsSiteHeadersSettingsSitesOptions表,我还为这些表创建了相应的表对象。在我的 SettingsSiteTable 类中,我有一个检索存储在数据库中的设置的方法。一切都很好,下面的代码在我的AppController中工作没问题。

我在获取值以在我的视图中正确显示时遇到问题。

我的主题默认布局中有以下代码,位于plugins/Default/src/Template/Layout/default.ctp

我收到了“在 plugins/Default/src/Template/Layout/default.ctp 中找不到 Class 'Configure' ”错误消息。

所以我然后去了AppView.php文件并在命名空间声明下添加了以下行:

错误仍然存​​在。