问题标签 [lithium]
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.
php - 在 Lithium 中访问多个模型的深层关系
是否可以在 Lithium 关系中访问多个模型?
例如,我有一个用户模型:
我有一个城市模型:
和一个状态模型,等等。
如果我正在查询一个类似于 的用户,Users::first()
是否可以获得结果中包含的所有关系?我知道我可以做到Users::first(array('with' => 'City'))
,但我想让每个 City 也返回它的 State 模型,所以我可以像这样访问它:
现在我只能让它深入一层($user->city
),我不得不再次重新查询,这似乎效率低下。
aop - Dispatcher::applyFilter _callable - 将消息传递到重定向页面
我按照http://li3.me/docs/manual/lithium-basics/filters.wiki中的教程进行操作
在教程结束时,如果用户未经授权,那么他们将被重定向到登录页面。
我的问题:我想知道如何在登录页面上显示一条消息来解释他们被重定向的原因。
我假设我必须将我的消息传递给闭包,但我不确定在闭包本身中要做什么。
php - MongoDB 在文件保存时崩溃 PHP,500 错误;可以毫无问题地检索保存的文件
昨晚我在调试一种情况,当我上传文件时,运行 lighttpd 和 fastcgi 导致 500 错误。仔细一看,确实是文件在上传,甚至还保存到Mongo数据库后端,但还是报500错误。
所以今天我切换到 apache,我们已经在另一个系统上工作过,但错误仍然存在,而是出现了“空响应”。经过一番调查,我发现它似乎是在将文件保存到 Mongo 数据库时发生的。我的代码如下:
创建文件时似乎很好,但是在保存文件数据时,它似乎可以毫无问题地进入数据库,但我认为它不能正确返回。查看 mongo 日志,每次数据库保存后都会出现:
因此,问题似乎在于 MongoDB 在将文件保存到 GridFS 时抛出某种形式的错误 - 在此之前是否有人遇到过这样的问题,这可能会干扰 PHP 导致它基本上崩溃?
谢谢,
担
(顺便提一下——我正在使用 Lithium PHP 框架和 64 位版本的 MongoDB)。
更新:
为了更彻底地了解正在发生的事情,在运行 lighttpd 时,我在上传时收到此错误:
在 Mongo 中保存数据没有问题,它只是文件上传,有问题的文件大小为 45K,所以甚至不是大文件。
这是在 AWS EC2 上运行的,带有 PHP 5.3.10 和 MongoDB 2.0.4
进一步更新:
只是为了尝试使其尽可能简洁并获得响应,我似乎确定的是 MongoDB 在文件保存在它的数据库中之后正在做一些事情,这会导致 PHP 崩溃问题。
保存文件后,我可以毫无问题地检索它,它似乎只是在最初将其保存到数据库时,它导致 PHP 崩溃并提供 500 错误。
php - 安装锂PHP框架
我是一个长期的 codeigniter 框架用户,我喜欢你如何下载它,通过 ftp 提取并上传到你的服务器,就是这样,准备好了。
现在,我很想尝试锂框架,但是哦,我的,命令提示符、shell 访问、github ......这超出了我的范围,而且我没有 shell 访问我的主机。
我真的需要这一切吗?我可以不只是通过 ftp 下载、提取和上传吗?
提前致谢!
php - 锂:在 find() 之后运行过滤器以格式化输出
我想从我的模型中指定一个字段的输出,所以我添加了一个date
键到我的$_schema
:
models/Tags.php
我将时间作为无符号整数存储在 db 中(的输出time()
)。
我希望我的基本模型格式化任何具有date
输出键的字段。我认为最好的地方是在之后find
:
extensions/data/Model.php
这似乎不起作用。当我执行 find all 时,这个过滤器似乎被命中了两次。第一次,$entity
包含一个count()
结果,只有在第二次命中时,它才包含该Records
对象。
我究竟做错了什么?我该如何改变它,以便<?= $tag->created; ?>
在我的视图中简单地按照我想要的方式格式化日期?从本质上讲,这需要是某种“后过滤器”。
编辑
如果我能找到一种访问当前模型实体对象的方法(不是完整的命名空间路径,$self 包含它),我可能可以解决我的问题。
php - PHP Lithium:对嵌入式对象数组进行排序
我很想使用 PHP Lithium 对嵌入式 MongoDB 对象进行排序。我有一个模型“线程”,它看起来几乎像这样:
现在我想根据他们的支持对帖子进行排序。我已经写了一个大致做我想要的方法:
这可行,但显然它将帖子作为普通数组返回,而未排序的帖子是一种lithium\data\collection\DocumentArray
类型。
我真的需要处理数组而不是对象,还是有一种方法可以让我在不丢失原始数据类型的情况下对它们进行排序?
php - 锂和验证复杂的表单输入 - 如何?
我已经完成了很多锂教程(下面的链接以防他们帮助其他人,也表明我已经完成了我的作业:) 我了解创建模型、视图、控制器和使用 MVC 创建的最基本部分基于表单输入的数据库记录。
但是,我是 webapps 和 Lithium 的 MVC 新手,我不确定在更复杂的情况下应该如何编写代码。这是一个一般性问题,但我有两个具体的验证问题:
- 我应该如何验证从表单提交的日期数据?
- 我应该如何检查两个用户电子邮件字段是否具有相同的值?
对于这些问题的任何帮助,我将不胜感激,像这样的具体示例也将真正帮助我理解如何在其他情况下进行良好的 MVC 编码!
日期输入 - 验证跨多个表单输入拆分的数据
出于 UI 原因,注册表单要求用户在三个字段中输入他们的出生日期:
验证此服务器端的最佳方法是什么?我认为我应该利用自动验证,但我不确定对于一组不属于模型的变量的最佳方法。例如:
- 我应该对
$this->request->data
in 进行后处理UsersController
吗?例如$this->request->data
,在UsersController
将其传递给Users::create
. - 我应该将表单字段拉出
$this->request->data
并使用对Validator::isDate
inside的静态调用UsersController
吗? - 有没有办法在模型中为不属于模型的表单变量组合编写验证规则?
- 我应该在那里覆盖
Users::create
并进行所有额外的验证和后处理吗?
所有这些似乎都可以工作,虽然有些看起来有点难看,我不知道哪些会在未来给我带来重大问题。
[编辑:与此密切相关的是将三个表单字段组合成一个字段以保存在模型中的问题]
电子邮件输入 - 检查两个表单字段是否相同,但只存储一个
对于常识/惯例,注册表单要求用户指定他们的电子邮件地址两次:
如何编写一个自动验证规则来检查这两个表单字段是否具有相同的值,但只将 email_address 保存到数据库中?
这感觉它与上述问题几乎相同,因为我能想到的可能答案列表是相同的 - 所以我将其作为一个问题提交,但我非常感谢你对这两个部分的帮助,因为我认为这个解决方案将是微妙的、不同的、同样具有启发性的!
[编辑:与此密切相关的是未将 verify_email_address 存储到我的模型和数据库中的问题]
关于锂的一些背景阅读
我读过其他人,但是这三个教程让我现在与用户在一起并注册表格......
关于密切相关主题的其他一些 StackOverflow 问题(但没有回答,也不是锂特定的)
- 这个问题的一个答案建议创建一个单独的控制器(和模型和......?) - 我觉得它不是很“锂”,我担心它也可能很脆弱/容易出错
- 这个精彩的故事让我确信我担心将其放入控制器是正确的,但我不确定什么是好的解决方案
- 这个视图让我认为我应该以某种方式将其放入模型中,但我不知道在锂中执行此操作的最佳方法(请参阅上面日期条目下的项目符号列表)
- 这个Scribd 演示文稿问了我希望在最后一页回答的问题……于是它停止了,没有回答!
注意:CakePHP 风格的答案也很好。我不知道,但它很相似,如果需要,我相信我可以从中翻译!
php - 保存新的 1:n 关系
我有一个带有RecordHeader
RecordHeader 模型的记录头(id PRIMARY KEY,entryDate DATETIME,fullName TEXT)
我有RecordDetails
RecordDetails 模型的记录详细信息(id PRIMARY KEY,headerID FOREIGN KEY,answer TEXT)
我的 RecordHeader 定义了一个关系:
我保存了一个视图,其中包含一个“id”隐藏字段、一个“headerID”隐藏字段、一个具有任意名称(“xyz789”)的“fullName”文本字段和一个“answer”文本字段,我将其放入了一些任意数据(“abc123”)。
如果 id 和 headerID 为空,我的控制器会去掉它,它将在一系列新问题的开始并填写 entryDate
我在 RecordHeaders 中有数据,但在 RecordDetails 中没有。
RecordHeader(1, "2012-03-30 12:40", "xyz789")
RecordDetails 表为空
当我在 RecordHeaders::create() 上检查请求时,请求确实包含“abc123”的“答案”
我做错了什么,或者如果 RecordHeader 已经在数据库中,我只能保存 RecordDetails ,并且我在 RecordDetails 对象上调用 save ?
php - 为什么源代码位于 app/resources/tmp/cache 文件夹中?
我是锂新手。我有一个锂代码,我想稍微改变一下。所以,我的想法是在所有源代码中搜索我想要更改的特定代码(例如 tag>),我在 app/resources/tmp/cache 子文件夹中找到了它。为什么源代码位于那里?
php - PHP Lithium:过滤现有的 DocumentSet 并获得第一个匹配项
我正在从 MongoDB 中检索 Lithium 中的DocumentSet,但我不想一次处理所有文档。相反,我想要一个过滤器,我可以这样说:
我已经尝试过这样做,但是没有用:
即使我在闭包内手动返回 true,它也总是返回一个空的 DocumentSet。
只是为了增加清晰度:我不是在寻找数据库操作,而是想从已经存在的 DocumentSet 中获取一个。有没有一种奇特的方法来实现这一点,还是我需要使用自定义函数遍历集合?