$ this-> request-> data EMPTY - 当我禁用Fields CakePHP 2时

时间:2013-09-06 22:30:49

标签: forms cakephp model cakephp-2.0

我有一个包含一些禁用字段的表单,当提交表单时,$ this-> request->数据和$ _POST为空,删除已禁用的字段,它再次没问题。虽然它仍然可以通过非禁用字段。我甚至尝试在按下提交按钮时删除禁用的字段属性,但这仍然返回一个空数组。

是否有与蛋糕有关的东西可能导致这种情况?

由于

//来自查看代码的SNIPP:

$this->Form->create('Card', array('class' => 'GeneralValidate'));

$this->Form->input('Card.property_id', array('type'=>'select', 'empty'=>true , 'class' => 'required adminOnlyField', 'div' => array('class' => 'required'))); 
$this->Form->input('Card.building_id', array('type'=>'select', 'empty'=>true, 'id' => 'BuildingSelector', 'class' => 'adminOnlyField', 'label' => 'Building (If Applicable)')); 
$this->Form->input('Prospect.waiting_list_details', array('value' => $prospect['Prospect']['waiting_list_details']));
$this->Form->input('SaleDetail.property_sold', array('class' => 'checkbox', 'checked' => $ps_checked));
$this->Form->input('SaleDetail.date_conditions_met', array('type'=>'text', 'class' => 'text date_picker adminOnlyField', 'value' => $this->Date->format($saledetail['SaleDetail']['date_conditions_met'])));
$this->Form->button('Save & Continue', array('type'=>'submit', 'label' => 'Save', 'name' => 'quicksave' , 'class' => 'submit long clear_ready_only'));

//来自视图的JS

$(function () {

var $adminOnly = $('.adminOnlyField');
$adminOnly.prop('disabled',true).prop('readonly',true);
$adminOnly.attr("onclick","return false");
$adminOnly.attr("onkeydown","return false");
$adminOnly.removeClass('required');
$adminOnly.removeClass('date_picker');



$('.clear_ready_only').click(function(e) 
{
    e.preventDefault();
    $adminOnly.prop('disabled',false).prop('readonly',false);
    $adminOnly.attr("onclick","return true");
    $adminOnly.attr("onkeydown","return true");
    $('#CardModifysaleForm').submit();
});

});

2 个答案:

答案 0 :(得分:0)

这就是HTML的工作方式,禁用不会发布。 CakePHP无法更改从浏览器发送的内容。如果您仍想要该值,可以将其设置为隐藏元素。

更新

我看到的一些问题:

  1. 在视图中缺少Form::end()(总是good idea要插入它)。
  2. 您从未说过您的表单是从JS提交的,首先使用简单的表单POST然后使用JS进行测试。
  3. 您的JS代码设置为按ID CardModifysaleForm提交表单。您提供的视图代码中没有此类ID,并且您没有从您提供的代码段中将表单设置为该ID。

答案 1 :(得分:0)

我最终从此处删除了禁用选项,仅保留就绪并添加了一些额外的CSS样式,因此它看起来对用户不起作用。这不是问题的确切答案,而是作为一种不同的方法。