【问题标题】:$this->request->data EMPTY - When I have disabled Fields CakePHP 2$this->request->data EMPTY - 当我禁用 Fields CakePHP 2
【发布时间】:2013-09-06 22:30:48
【问题描述】:

我有一个包含一些禁用字段的表单,当提交表单时,$this->request->data 和 $_POST 都是空的,删除禁用的字段并再次正常。我会虽然它仍然会通过非禁用字段。我什至尝试在按下提交按钮时删除禁用的字段属性,但这仍然返回一个空数组。

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

谢谢

// 来自视图代码的片段:

$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();
});

});

【问题讨论】:

    标签: forms cakephp model cakephp-2.0


    【解决方案1】:

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

    更新

    我看到的一些问题:

    1. 视图中缺少Form::end()(始终使用good idea 插入它)。
    2. 您从未说过您的表单是从 JS 提交的,首先使用简单的表单 POST 进行测试,然后再使用 JS。
    3. 您的 JS 代码设置为通过 ID CardModifysaleForm 提交表单。您提供的视图代码中没有这样的 ID,并且您没有将表单设置为您提供的 sn-p 中的那个 ID。

    【讨论】:

    • 我明白这一点,但我认为非禁用字段应该仍然存在?我在表单上有 3 个禁用字段和 10 个非禁用字段,当这 3 个被禁用时,其他数据也不会出现?
    • 好的,起初并不清楚当您发布时,您没有从您的问题中获得任何字段。你能用你的视图代码更新你的问题吗?
    • 好的,谢谢,我已经放入了代码的 sn-p,表单创建行,几行带有禁用类的行和一些没有然后按钮的行。我还输入了我正在运行的 jquery 来禁用/启用它。
    【解决方案2】:

    我最终从这里删除了 disabled 选项,只留下了 ready 并添加了一些额外的 CSS 样式,所以它看起来对用户来说是禁用的。这不是问题的确切答案,而是一种不同的方法。

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多