我有一个表格,它在一个看起来类似于下面的表格中,我有一个Modx片段,在提交时会运行,根据发送的输入数组创建多个新资源。
<table class="table responsive-table">
<thead>
<th>pagetitle</th>
<th>longtitle</th>
</thead>
<tbody>
<tr>
<td><input type="text" name="pagetitle[]" value="" /></td>
<td><input type="text" name="longtitle[]" value=""/></td>
</tr>
<tr>
<td><input type="text" name="pagetitle[]" value="" /></td>
<td><input type="text" name="longtitle[]" value=""/></td>
</tr>
</tbody>
</table>
以下运行时发生的情况是,它按预期创建新资源,但所有字段都设置为“Array”。而不是数组的值。
<?php
$allFormFields = $hook->getValues();
foreach ($allFormFields as $key => $value)
{
$doc = $modx->newObject('modResource');
$doc->set('createdby', $modx->user->get('id'));
$doc->set('pagetitle', $value['pagetitle']);
$doc->set('longtitle', $value['longtitle']);
$doc->save();
}
return true;
答案 0 :(得分:1)
print_r()
上的{p> $allFormFields
很可能会给你这样的内容:
// dump of form values
Array (
[pagetitle] => Array (
[0] => 'pagetitle1'
[1] => 'pagetitle2'
),
[longtitle] => Array (
[0] => 'longtitle1'
[1] => 'longtitle2'
),
)
当您尝试将资源字段设置为$allFormFields['pagetitle']
时,这就是您获取'Array'的原因。
我不完全确定你在做什么,但最好像这样构建你的表单:
<input type="text" name="resource[0][pagetitle]" value="" />
<input type="text" name="resource[0][longtitle]" value="" />
<input type="text" name="resource[1][pagetitle]" value="" />
<input type="text" name="resource[1][longtitle]" value="" />
然后你可以遍历每个资源的表单字段,如下所示:
<?php
$allFormFields = $hook->getValues();
$userId = $modx->user->get('id');
foreach ($allFormFields['resource'] as $fields) {
$doc = $modx->newObject('modResource');
$doc->set('createdby', $userId);
$doc->set('pagetitle', $fields['pagetitle']);
$doc->set('longtitle', $fields['longtitle']);
$doc->save();
}
答案 1 :(得分:0)
谢谢okyanet,
我最终做了下面的工作,正如我所希望的那样:
<?php
$allFormFields = $hook->getValues();
$resources = array();
foreach ($allFormFields as $field => $values) {
if (is_array($values)) {
foreach ($values as $key => $value) {
$resources[$key][$field] = $value;
}
}
}
foreach ($resources as $resource) {
if ($resource[pagetitle] == '') {
continue;
}
$doc = $modx->newObject('modResource');
$doc->fromArray($resource);
$doc->set('createdby', $modx->user->get('id'));
$doc->set('template', $hook->getValue('template'));
$doc->set('parent', $hook->getValue('parent'));
$doc->save();
}
return true;