问题标签 [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.
validation - CakePHP3 中令人困惑的验证与应用程序规则
关于验证的多个问题可能属于一起,因为它们都在处理 CakePHP 3 中的新验证概念。
我已经多次阅读食谱中的章节(1、2、3 ),但老实说,我不明白如何以正确的方式去做。我也知道目前在 GitHub 上有一个关于 CakePHP3 中的验证的问题/讨论,它可能涉及相同的主题。
验证错误被触发,例如使用 patchEntity。因此,我认为在执行保存操作之前始终检查/显示错误会更好:
为什么食谱教程$user->errors()
在保存数据之前不使用?据我了解,save
如果已经存在验证错误,则不需要调用它?!另一种方法是结合错误检查和保存操作:
你在用这个吗?我应该使用它吗?或者如果不是,为什么不呢?
为什么即使我没有$user->errors()
在控制器中使用 CakePHP 也会显示验证错误,就像在所有食谱示例中一样?我以为save
不会检查实体验证?!
示例:isUnique
根据食谱, “确保电子邮件唯一性”是应用程序规则的一个用例。
该错误只能通过save
控制器中的 -call 触发。但也可以在验证中检查唯一性。为什么不这样做更好?
如果我可以在验证中添加 ApplicationRule,为什么我会/应该使用 ApplicationRules?
我如何在 ApplicationRule 中定义规则何时应仅应用于特定操作(并非所有创建/更新调用)?
patchEntity
当在-call之后操作实体时,我也没有看到或理解两个单独的验证状态的好处。
如果我自动向实体添加一些值,我想确保这些值在将它们保存到数据库之前仍然有效(如在 CakePHP2 中)。所以我想总是 使用验证作为应用程序规则更好/必要?!
你一般如何处理这个问题?是否有其他示例可用于显示/展示验证与应用程序规则的好处和一些用例?
cakephp - 如何仅为所有控制器订购一次数据?
我正在用 CakePHP 3 (3.0.13) 编写一个非常简单的应用程序,我想知道我是否可以做一些更简单、更好的事情。
我本质上是在编写一个问题跟踪器来跟踪问题和工作。我有一个名为priorities 的表,其中包含每个级别的唯一ID 和名称,例如Low、Medium 和High。我的问题是,虽然我已按照我希望它们出现的顺序将它们添加到数据库中,但它们是按字母顺序出现的,即高、低、中。
在我的问题控制器的添加功能(例如)中,我可以更改以下内容:
$priorities = $this->Issues->Priorities->find('list');
...至:
$priorities = $this->Issues->Priorities->find('list', ['order' => 'Priorities.id ASC']);
...但我不想在任何我想使用优先级列表的地方都这样做。
我想有一种 DRY 方式来指定这个(在模型中?),它有效地设置了在其他地方使用的默认值,但如果有,我找不到它。
cakephp - CakePHP 3.1-rc1 utf-8 特殊字符输出
在从 2.6 迁移到 3.1 期间,可能会遇到在克罗地亚语中显示特殊字符的问题。内容取自数据库。
内容通过 CakePHP 2.x 应用程序存储在数据库中,并且可以正确显示。但是当我连接一个新的应用程序时,我无法正确显示这些字符 čćšđž。
数据库/表: MyISAM utf8_general_ci
cakephp 2.x 应用程序
核心.php
引导程序.php
cakephp 3.1- rc1
引导程序.php
如何解决这个问题?
email - 在 CakePHP 3.1 中尝试通过 Mandrill 发送电子邮件时超时
我正在尝试通过 Mandrill 发送一封带有 CakePHP 的电子邮件,但它只是旋转然后给出:
错误:连接超时
蛋糕\网络\异常\套接字异常
根据页面错误/堆栈跟踪,错误发生在vendor/cakephp/cakephp/src/Mailer/Transport/SmtpTransport.php line 206
:
从 /tmp/error.log:
2015-09-21 13:48:04 错误:[Cake\Network\Exception\SocketException] 连接超时请求 URL:/portal/users/add 堆栈跟踪:
#0 /home/user/public_html/user/mysitefolder/vendor/cakephp/cakephp/src/Mailer/Transport/SmtpTransport.php(206): Cake\Network\Socket->connect()
#1 /home/user/public_html/user/mysitefolder/vendor/cakephp/cakephp/src/Mailer/Transport/SmtpTransport.php(161): Cake\Mailer\Transport\SmtpTransport->_connect()
#2 /home/user/public_html/user/mysitefolder/vendor/cakephp/cakephp/src/Mailer/Email.php(1304): Cake\Mailer\Transport\SmtpTransport->send(对象(Cake\Mailer\Email))
#3 /home/user/public_html/user/mysitefolder/src/Controller/Portal/UsersController.php(92): Cake\Mailer\Email->send()
#4【内部函数】:App\Controller\Portal\UsersController->add()
#5 /home/user/public_html/user/mysitefolder/vendor/cakephp/cakephp/src/Controller/Controller.php(416): call_user_func_array(Array, Array)
#6 /home/user/public_html/user/mysitefolder/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(114): Cake\Controller\Controller->invokeAction()
#7 /home/user/public_html/user/mysitefolder/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(87): Cake\Routing\Dispatcher->_invoke(对象(App\Controller\Portal\UsersController))
#8 /home/user/public_html/user/mysitefolder/webroot/index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#9 {主要}
在控制器中发送电子邮件:
在我的 app.php 中:
如果我只尝试标准的 PHP 邮件,它可以工作:
回顾: 我已经检查过 Mandrill,他们说他们不会阻止任何端口或类似的东西。我已经验证了我的主机(HostMonster),他们说端口是开放的,他们没有阻止任何东西。
我不知所措。即使不可能得到明确的答案,我也很感激任何帮助指出我正确的方向或一些想法,我什至可以调试这个问题。
php - cakephp3 session deprecated
I have update into my project the last version of cakephp core. Now I get this error:
The error I think is in this line:
What should I use instead?
Thanks
cakephp - $this->viewPath 不适用于 CakePHP 3.1
我已通过 composer 将我的 cakePHP 应用程序更新到 3.1,并且我正在尝试修复所有小的或已弃用的警告。
我可以很容易地修复这些$this->layout
东西,但我不明白如何修复viewPath
错误。
查看迁移指南,它看起来应该是完全相同的东西:
应该成为
但这不起作用,我唯一得到的是
解决此问题的正确方法是什么?
php - cakephp3 自定义验证
我有一个duration
字段有时可以为空,有时不能,具体取决于表单发送的其他数据。所以我正在尝试在 CakePHP3 中进行自定义验证。
在我的桌子上我做了
现在,当我设置持续时间字段的值时,我得到一个'duration is not OK'
错误(如预期的那样)。但是当我让值为空时,我得到一个'This field cannot be left empty'
错误。
所以我补充说:
但在这种情况下,当duration
为空时,我根本不会收到错误消息。
我做错了什么还是只是我不了解验证的工作原理?
php - 带有条件语句的 CakePHP 3.1 路由
我正在使用 CakePHP 3.1,我正在尝试创建一个像这个伪代码一样工作的路由
类别将控制更改样式的主题,我将在我的 ArticlesController.php 中添加
这甚至可能吗?如果检查是否存在超出路由范围,我不介意检查 inList。由于类别和子类别将是固定数量。
这对路线来说很复杂吗?我应该在视图操作下的 ArticlesController.php 中执行此操作吗?然后做
cakephp - 从 cakePHP 3.1 起响应 XML 不工作
我需要在我的应用程序中呈现一个 XML+XSL 模板,它曾经与 cakePHP 3.0 一起使用。我最近切换到 3.1 并且它已停止工作。问题是我有一个格式化的 XML 视图,而现在我只得到一个纯字符串。
迁移指南说了一些关于RequestHandlerComponent
.
这是我的控制器(与 Cake3.0 完全一样):
布局,xml.ctp
真的很简单
并且viewxml.ctp
模板只是将 xml 作为字符串回显。
如何再次获取格式化的 XML+XSL?
apache - CakePHP 3.1 安装:内部服务器错误 500
我已经通过 composer 在我的 apache 服务器上安装了 CakePHP 3.1,但之后我收到 500 错误。.htaccess 文件看起来不错。对于 vhost 和 */htdocs,“AllowOverride All”设置为 All。日志显示这一行:
[Thu Sep 24 10:15:20.193955 2015] [:error] [pid 7231:tid 2761524324096] (104)Connection reset by peer: [client 89.x.x.x:42930] FastCGI: failed to read from backend server
由于我的主人是 Gandi,我在那里查找了一些提示:
此错误表明 Apache 服务未从解释器(PHP、node.js、Python 等)获得响应,因此无法传递请求的页面。发生此错误时,您应该分析解释器的日志,以便搜索问题根源所在的错误。
那么,我现在该怎么办?CakePHP 的日志目录只显示一个名为“empty”的空文件。我希望有人能给我一个提示,我该如何解决这个问题。
PS:在安装 CakePHP 时,我收到以下错误,我认为可以忽略,因为它继续安装:
Cannot create cache directory /srv/data/.composer/cache/[...] , or directory is not writable. Proceeding without cache