【问题标题】:Passing PHP array to CakePHP's form helper将 PHP 数组传递给 CakePHP 的表单助手
【发布时间】:2015-09-17 04:00:38
【问题描述】:

过去我曾像这样向 CakePHP 发送数组:

$this->Form->input("Req.{$i}");

我已手动将{$i} 放入其中,该{$i} 源自循环中的代码本身。理想情况下,我想输入 Req.{} 之类的东西来生成下一个键索引,但似乎只有手动输入才会起作用。多年后我需要类似的东西

$this->Form->input("Req.{$i}.list.{}");

我想避免生成{$i2}。基本上,我问的是如何在 POST 上正确地将多维数组发送到 $this->request->data,而不必指定索引名称,就像我们在传统 PHP 中可能有 <input name='whatever[]'> 一样。如果这很重要,我将使用 jQuery AJAX 发布。

更新: 按照 drmonkeyninja 的回答,我收到了

[list] => Array(
                            [0] => Array
                                (
                                    [name] => 
                                )

                            [1] => Array
                                (
                                    [value] => 
                                )

                            [2] => Array
                                (
                                    [req] => 
                                )
                 )

我似乎需要创建一个 $i2,因为 PHP/HTML 无法知道我不是试图为每个条目创建一个新数组。

【问题讨论】:

    标签: cakephp cakephp-2.0 form-helpers


    【解决方案1】:

    通常在 CakePHP 中,您使用 .:-

    定义分隔数组索引的数组路径
    $this->Form->input('Model.0.value'); // name="data[Model][0][value]"
    

    如果您不想指定数字索引,您可以使用.. 来表示空索引:-

    $this->Form->input('Model..value'); // name="data[Model][][value]"
    

    更新

    如果您无法让 CakePHP 数组路径语法按您需要的方式工作,您始终可以在 input 选项中手动设置输入名称:-

    $this->Form->input('Model..value', ['name' => 'data[Model][][value]']);
    

    【讨论】:

    • 我也是这么想的,但是当我尝试使用多个子维键时,我得到了这个,假设我有名称和值:[list] => Array ([0] => Array ( [name] => 'x' ) [1] => Array ([value] => 'y' )。也许 CakePHP 无法确定我不想创建两个 NEW 数组,而是我希望名称和值都在同一个数组中。
    • 您也可以手动设置输入的名称。请参阅我的更新答案。
    • 您的回复很有帮助,因为它让我意识到没有$i2 就没有解决方案。我把你的名字放在那里,但我得到了[0] => ('value' => 'x'), [1] => ('name' => 'y'),因为 PHP 仍然认为我正在为它在输入名称中找到的每个 [] 创建一个新数组。感谢您的帮助,我已经更新了我的问题。
    猜你喜欢
    • 2011-09-27
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多