Php 点语法和嵌套html表单。测试期间无法获取数据

Php 点语法和嵌套html表单。测试期间无法获取数据,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我是新来的。我没有在浏览器中尝试过,我正在为此使用测试 我有一个类似这样的测试: public function testStoreRequestValid() { $data = [ 'name' => 'New Item', 'parameter.count' => '3', 'parameter.0.parameter_id' => '4', 'parameter.0.value_id' =>

我是新来的。我没有在浏览器中尝试过,我正在为此使用测试

我有一个类似这样的测试:

public function testStoreRequestValid()
{
    $data = [
        'name' => 'New Item',
        'parameter.count' => '3',
        'parameter.0.parameter_id' => '4',
        'parameter.0.value_id' => '',
        'parameter.0.value' => 'text',
        'parameter.1.parameter_id' => '1',
        'parameter.1.value_id' => '2',
        'parameter.1.value' => 'Yes',
        'parameter.2.parameter_id' => '2',
        'parameter.2.value_id' => '',
        'parameter.2.value' => '10'
    ];

    $response = $this->call('post', '/item', $data);

    // ...
}
当我尝试使用以下方法获取数据时:

$parameterCount = $request->input('parameter.count');
我得到null值(如果我使用has方法,它会得到false)

当我尝试使用方括号时,我得到了结果,但我希望API也能与JSON一起使用,而不会在JS中有太多的草率


如何以最简洁的方式解决此问题?

Laravel中的点具有特殊含义,因此您不能真正使用键中有点的数组。您应按以下方式申报您的数据:

<?php
$data = [];
array_set($data,'name','New Item');    
array_set($data,'parameter.count','3');
array_set($data,'parameter.0.parameter_id','4');
array_set($data,'parameter.0.value_id','');
array_set($data,'parameter.0.value','text');
array_set($data,'parameter.1.parameter_id','1');
array_set($data,'parameter.1.value_id','2');
array_set($data,'parameter.1.value','Yes');
array_set($data,'parameter.2.parameter_id','2');
array_set($data,'parameter.2.value_id','');
array_set($data,'parameter.2.value','10');

我确实理解这种方法,但当这些数据通过post请求发送时,Laravel会以类似的方式处理它们吗?说它应该工作,但这并没有解释它应该如何工作。它太模糊了,我只能猜测。它是否需要方括号或点?在使用数组输入处理表单时,请特别检查它提到的位置,您可以使用“点”符号访问数组。如果存在类似于
'parameter[count]'=>'3'
的内容,并尝试使用
$request->input('parameter.count')检索它,则它在测试中不起作用
它不起作用,我每次尝试都会得到null。编辑:它甚至没有通过验证。您的输入需要如下所示:
[parameter=>[count=>3]
,以便能够通过测试中的
$request->input(“parameter.count”)
获取它。这相当于
(或类似)。对不起,打扰了。在有关测试的文档中,我找不到任何提及这一点的内容。