【问题标题】:How can I pass an array of hidden informations in a POST request in Cake 3.2?如何在 Cake 3.2 的 POST 请求中传递隐藏信息数组?
【发布时间】:2025-12-22 00:45:07
【问题描述】:

我已经为 POST 请求创建了一个表单,但我需要发送一个在该表单中必须不可见的信息数组。 该数组包含未指定数量的其他数组。

我的数组称为“$dati”,由不限数量的数组组成,每个数组包含三个信息。

我的表单代码是:

<?= $this->Form->create(null,['type'=> 'post', 'url'=>['action'=>'selectForSell2',$rassegnaselezionata->id,$showselezionato->id,$proiezioneselezionata->id  ]]) ?>
    <?= $this->Form->input('stato', ['options' => ['tutti' => 'Tutti i Soci',  'firmato' => 'Soci Firmati', 'approvato' => 'Soci Approvati'] ] ); ?>
    <?= $this->Form->input('campo', ['options' => ['cognome' => 'Cognome', 'nome' => 'Nome', 'codicefiscale' => 'Codice Fiscale'] ] ); ?>
    <?= $this->Form->input('ricerca', ['label' => false, "class" => " form-control input-medium", "placeholder" => __('Ricerca'), 'visible'=>false]); ?>
    <?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>

【问题讨论】:

  • 当你说“必须在表单中不可见”时,你的意思是输入元素不应该对查看页面的普通用户可见,还是你的意思是即使有人看源页面应该是看不到数据了吧?
  • 出于我的目的不应该对普通用户可见

标签: php arrays cakephp post cakephp-3.0


【解决方案1】:

在我的项目中,我有以下元素作为 hidden.ctp:

if (isset($model)) {
    $model .= '.';
} else {
    $model = '';
}

foreach ($fields as $field => $values) {
    if (is_array($values)) {
        echo $this->element('hidden', ['model' => $model . $field, 'fields' => $values]);
    } else {
        echo $this->Form->hidden($model . $field, ['value' => $values]);
    }
}

然后你可以用它来调用它

echo $this->element('hidden', ['fields' => $dati]);

【讨论】:

  • 它几乎可以工作了!但我必须发送一个名为“dati”的数组变量,其中包含 n 个其他数组(无名),其中包含三个数据(“socio”、“abbonamento”和“biglietto”)。使用您的代码,我发送带有 n 个数组的请求,但不包含在“dati”数组中
【解决方案2】:

如果你想隐藏数组的值,那么你可以这样做。

<?php
                                $a = array("Name" => "Peter", "Age" => "41", "Country" => "USA");
                                ?>

                                <input type="hidden" name="data[Menu][arr]" value="<?php pr($a); ?>">

当你发布数据时它可以产生输出。检查它。它是否需要

Array
(
    [Menu] => Array
        (

            [arr] => Array( [Name] => sradha  [Age] => 20 [Country] => IN)


        )

)

【讨论】: