在JS添加新字段后,cakephp表单未正确提交

cakephp form not submitted correctly after JS added a new field

本文关键字:表单 cakephp 提交 添加 JS 新字段 字段      更新时间:2023-09-26

The View

<?php echo $this->Form->create('Practice');
echo $this->Form->input('title',array('value'=>'test value'));
echo $this->Js->submit('Ajax Submit', array(
'update' => '#left',
 'url'=>'/practices/content',
 'async' => true,
 'method' => 'post',
 'dataExpression'=>true,
 'data'=> $this->Js->serializeForm(array(
     'isForm' => true,
     'inline' => true 
  ))
    ));
?> <?php echo $this->Form->end(); ?>

在 Ajax 提交之前,表单工作正常。 Ajax 提交实际上返回了相同模型的新表单字段。 下面是表单首先发送给 Ajax 的视图

echo $this->Form->input('Practice.options',array('value'=>'regex value'));

新字段值未与表单一起提交

我犯了两个错误,首先新的 ajax 返回的字段不在表单标签内,其次我需要绕过 cakephp 安全检查

function beforeFilter() {
        parent::beforeFilter();
        $this->Security->blackHoleCallback = 'blackhole';
        $this->Security->csrfCheck = false;
        $this->Security->validatePost = false;
        $this->set('contentLayout', 'admin_dashboard');
    }

确保在表单末尾放置

<?php echo $this->Form->end(); ?>

并解锁安全组件的当前操作