CakePHP中的“Automagic”输出字段?

时间:2010-02-17 16:09:27

标签: cakephp crud form-helpers

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

echo $form->input('fieldname', $options);

生成所有内容的方法。

这会选择正确的元素类型,并将所有内容包装到带有< label>的div中。元件。

现在我有一些不可编辑的字段,但我想让它们显示(所以不会有标签,只是一个跨度,而不是< input>控件,那里有只是一些文字或跨度 我还需要能够随意控制“字段值”的内容。

有没有办法用$ form->输入呢?
我知道我可以简单地为所有这些生成标记,但它看起来很丑陋,而且非常重复。

谢谢!
丹尼尔

6 个答案:

答案 0 :(得分:2)

您可以随时将它们保留为输入,但会删除编辑选项。将'readonly' => true添加到输入参数应该在输入中添加如下内容:readonly="readonly"

答案 1 :(得分:1)

怎么样:

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

答案 2 :(得分:1)

您不需要(不应该!)触摸核心文件。

您可以根据内置的FormHelper创建自己的FormHelper并覆盖输入法。

这是我如何覆盖HtmlHelper的排序方法来为分页表添加排序方向类:

http://richardathome.com/blog/cakephp-extend-paginatorhelper-indicate-sort-field-and-direction

答案 3 :(得分:1)

你最好这样做:

$form->data["fieldname"]

并用您需要的任何标记包围它。如果需要,可以像Richard建议的那样添加你自己的助手。

但不要改变核心。它只会让你头疼得多。

答案 4 :(得分:0)

最后,我最终修改了CakePHP: - (

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

echo $form->input('customer_id', array('type' => 'output', 'value' => 'xxxx' ));

这样做相对微不足道,尽管我宁愿不接触核心文件。

我将details on how to do it添加到他们的错误系统中,看看他们是否会考虑在将来的版本中添加它。

希望这有助于某人!

答案 5 :(得分:0)

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