CakePHP3:无法在表单中显示虚拟字段

时间:2017-05-21 19:07:14

标签: cakephp-3.4

beforeMarshall()中,我在我的实体中创建了一个额外的字段。 在我的控制器中,我debug($myEntity)就在将数据分配给视图之前,我看到了我的字段。 我甚至创建了一个像下面这样的getter:

protected function _getTmpImage() {

    if (isset($this->_properties['tmp_image'])) {
        debug($this->_properties['tmp_image']);
        return $this->_properties['tmp_image'];
    } else {
        return null;
    }
}

在我看来,我看到了相应的debug()显示。

但接下来的行:

<?= $this->Form->hidden('agpoi_images.'.$key.'.tmp_image'); ?>

desesperately创建以下html代码:

<input name="agpoi_images[0][tmp_image]" class="form-control" value="" type="hidden">

你能告诉我为什么吗?

PS:我也尝试在我的实体类中添加以下语句,即使我认为我不必根据the doc

执行此操作
class MyEntity extends Entity
{

    protected $_virtual = ['tmp_image'];

}

1 个答案:

答案 0 :(得分:0)

在视图文件中,当使用表单元素时,public class Rating { private static int count; //here protected static Rating [] ratings = new Rating [100]; // instance variables, constructor, methods, etc 必须是'Modelname.fieldname'形式,这使得cakephp很容易替换控制器数据并以这种格式发送post请求。

在您的情况下,您可以使用$fieldname创建隐藏的表单字段,该字段将显示为

$this->Form->hidden(‘MyEntity.tmp_image)