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”)
获取它。这相当于
(或类似)。对不起,打扰了。在有关测试的文档中,我找不到任何提及这一点的内容。