cakephp-Javascript

cakephp-Javascript,javascript,cakephp,Javascript,Cakephp,我们正在使用CakePHP框架开发一个应用程序 基本上,它是一个问卷应用程序,有一些相关问题,即根据对特定问题的回答,它需要显示或隐藏下一个问题 例如。 问题:你结婚了吗?是/否 如果用户选择Yes,那么使用javascript将显示下一个问题供用户输入 问题:配偶姓名 保存此信息很好,但在编辑时,在填充表单时,我们希望能够显示用户输入数据的字段-在这种情况下,需要显示包含配偶姓名的字段 由于默认情况下我们隐藏配偶姓名字段,因此在编辑时,它不会显示该字段,即使该字段有值 CakePHP是否有办法


我们正在使用CakePHP框架开发一个应用程序 基本上,它是一个问卷应用程序,有一些相关问题,即根据对特定问题的回答,它需要显示或隐藏下一个问题

例如。 问题:你结婚了吗?是/否

如果用户选择Yes,那么使用javascript将显示下一个问题供用户输入

问题:配偶姓名

保存此信息很好,但在编辑时,在填充表单时,我们希望能够显示用户输入数据的字段-在这种情况下,需要显示包含配偶姓名的字段

由于默认情况下我们隐藏配偶姓名字段,因此在编辑时,它不会显示该字段,即使该字段有值

CakePHP是否有办法处理这个问题,或者需要我们编写一些javascript来处理这个问题


提前感谢。

CakePHP不会为您管理此功能。虽然CakePHP非常强大,是一个很棒的框架,但它不会为您编写这种逻辑。你必须写下来

我建议使编辑屏幕不同于添加屏幕。从数据库中构建值列表,并显示具有值的字段(包括需要值的任何空字段)


请记住,可重用并不一定意味着所有CRUD操作都适合同一视图。

与其他操作一样,我建议您使用不同的编辑和添加屏幕。 但您可以尝试使用如下Javascript实现:

<script>
function enableDisableField(targetFieldId){
    var targetField = document.getElementById(targetFieldId);
    var checkbox = event.target;
    console.log(checkbox.checked);
    if (checkbox.checked){
        targetField.disabled = false;
        targetField.value = "empyt";
    }else{
        targetField.disabled = true;
        targetField.value = "empyt";
    }
}

</script>

<label><input type="checkbox" onchange="enableDisableField('married')"/> Merried</label>
<?= $this->Form->input('married',['label' => false, 'disabled']); ?>

函数enableDisableField(targetFieldId){
var targetField=document.getElementById(targetFieldId);
var复选框=event.target;
console.log(checkbox.checked);
如果(复选框。选中){
targetField.disabled=false;
targetField.value=“empyt”;
}否则{
targetField.disabled=true;
targetField.value=“empyt”;
}
}
欢乐
它适用于“添加”,但如果您选择“添加”和“编辑”,则必须根据字段值更改“取消禁用”值:

<label><input type="checkbox" onchange="enableDisableField('married')"/> Merried</label>
<?= $this->Form->input('married',['label' => false, !isset($user->married) ? 'disabled' : '' ]); ?>
Merried

我不明白。你是在同一页上编辑和回答问题吗?基本上,这将是一个简单的形式。用户可以将数据添加到数据库中。表单包含问题,答案将被存储。我们也在使用同一个页面进行编辑。那么,如何使用cakephp管理添加/编辑的隐藏和显示功能呢?如果字段不是空的,只显示输入?谢谢John。现在我们有两个计划,你所说的就是其中之一。但是CakePHP有内置的东西吗?这样我们的代码将得到优化,我们也可以在其他页面中重用。@user599531很难说,我还不能确定我是否完全理解您。但我认为,如果需要的话,做一次检查并展示是一种方式