【发布时间】:2013-11-26 17:24:11
【问题描述】:
我有一个选项卡式表单,每个选项卡中都有一组相同的字段,只是语言不同。例如,我在每个选项卡中都有一个名称和描述字段,我将使用 CakePHP 的表单助手以下列方式创建每个输入:
英文标签
$this->Form->input("Service.en.name");
$this->Form->input("Service.en.description");
法语标签
$this->Form->input("Service.fr.name");
$this->Form->input("Service.fr.description");
之后(这可能是错误的,但它有效)我会将特定字段的值设置为包含由各种语言环境键入的值的数组。
我正在使用 TranslateBehavior,在升级到最新的 CakePHP(从 2.3 到 2.4.3)之前,一切都很好。现在,每当我尝试保存时,我都会收到一条错误消息:Unknown column "Array"
我找不到关于一次保存多种语言的任何信息。任何想法将不胜感激!
更新 1
我也尝试过像这样将语言环境移到最后:
$this->Form->input("Service.name.en")
结果相同
更新 2
根据 xdebug,这是 SQL:
UPDATE `cc_dev`.`services` SET `name` = Array, `description` = Array, `duration` = 60, `category_id` = 1, `backend_only` = "0", `id` = 1, `vendor_id` = 116, `updated` = "2013-11-26 18:46:11" WHERE `cc_dev`.`services`.`id` = "1"
它发生在保存期间。我只是先检查以确保请求数据不为空,仅此而已。
if (!empty($this->request->data)) {
$this->Service->save($this->request->data);
}
更新 3
提交的请求数据的内容,目前采用Update 1中指定的格式
<pre>Array (
[Service] => Array
(
[name] => Array
(
[en] => One-to-One Session
[fr] => Séance individuelle
)
[description] => Array
(
[en] => Choose a personalized training session of 45 minutes.
[fr] => Choisissez une séance de formation individuelle de 45 minutes.
)
[duration] => 60
[category_id] => 1
)
)
</pre>
【问题讨论】:
-
能否发布 Cake 尝试执行但失败的 SQL 查询?另外,您能否发布与正在生成的错误相关的代码行(您说它发生在您尝试保存时)?
-
我更新了我的帖子以包含请求的详细信息。
-
最后一个请求:
$this->request->data的内容。 -
大功告成!我非常感谢这一点:)
-
对不起,我对你在这里想要做什么感到有点困惑。我假设
Service在数据库中只有一个name列,对吗?那么您是否尝试将两个名称保存到单个列中?
标签: php cakephp internationalization cakephp-2.3