&引用;Automagic“;CakePHP中的输出字段?

&引用;Automagic“;CakePHP中的输出字段?,cakephp,crud,form-helpers,Cakephp,Crud,Form Helpers,我目前正在为我的CRUD表单使用CakePHP的“automagic”字段元素。 我的意思是我正在使用 echo $form->input('fieldname', $options); 方法生成所有内容 这将选择正确的元素类型,并使用元素将所有内容包装到一个div中 现在我有一些字段是不可编辑的,但我想让它们显示出来(因此实际上没有标签,只有一个span,而不是控件,只有一些文本或span)。 我还需要能够任意控制“字段值”的内容 有没有一种方法可以通过$form->input实现这一

我目前正在为我的CRUD表单使用CakePHP的“automagic”字段元素。
我的意思是我正在使用

echo $form->input('fieldname', $options);
方法生成所有内容

这将选择正确的元素类型,并使用元素将所有内容包装到一个div中

现在我有一些字段是不可编辑的,但我想让它们显示出来(因此实际上没有标签,只有一个span,而不是控件,只有一些文本或span)。
我还需要能够任意控制“字段值”的内容

有没有一种方法可以通过$form->input实现这一点?
我知道我可以简单地为所有这些生成标记,但是它看起来很难看,而且非常重复

谢谢!
丹尼尔

那么:

$html->tag("span", $form->data["fieldname"]);
如果这太难看了,您可以编写自己的助手:

<?php
class WhateverHelper extends AppHelper {
    var $helpers = array('Html');
    function whatever($fieldname) {
        return $this->Html->tag("span", $form->data[$fieldname]);
    }
}
?>


您可以始终将它们作为输入,但删除编辑选项。将
'readonly'=>true
添加到输入参数应该会添加如下内容:
readonly=“readonly”
最后,我修改了CakePHP:-(

我刚刚添加了执行此操作的选项:

echo $form->input('customer_id', array('type' => 'output', 'value' => 'xxxx' ));
这样做相对来说是微不足道的,尽管我宁愿不去碰核心文件

我把它们添加到他们的bug系统中,看看他们是否会考虑在将来的版本中添加它。 希望这对某人有所帮助!

您不需要(永远不要!)触摸核心文件

您可以基于内置的FormHelper创建自己的FormHelper,并重写输入方法

下面是我如何重写HtmlHelper的sort方法,为分页表添加排序方向类:


你最好做:

$form->data["fieldname"]
如果需要,按照Richard的建议添加自己的助手


但是永远不要改变核心。它只会让你更头疼。

echo$form->input('something',array('div'=>false,'label'=>false));

是的,考虑过这个,但它不能让我控制显示的值,听起来有点危险(因为有人可以篡改HTML和编辑字段,我想利用“auto magic防篡改功能”.这并不太难看,但它并没有达到我想要的效果,也就是说,让蛋糕制作出来,等等。但如果没有文本框,标签标签的意义是什么?我明白你的意思,我也有同感,从一个纯粹的角度来看。在我的特殊情况下,重点是它看起来都一样,样式都一样,而且很简单更易于维护。我不会说“purist”,更像是遵循标签标签的目的,但这是您的标记:)