Cakephp使用this-> set without array

时间:2012-09-27 01:46:06

标签: cakephp-1.3 cakephp-2.0

无法弄清楚我在做错了什么:

我有一个控制器:

$this->set('sizes', array('4x4'=>'4x4','6x6'=>'6x6','8x8'=> '8x8')); 

该视图包含以下内容:

echo $this->Form->input('size');

显示正确的数组下拉框。

在相同功能的同一个控制器中我有:

$this->set('states', 'this state'); 

该视图包含以下内容:

echo $this->Form->input('state');

但“状态”文本框中没有任何信息。 如果我将状态行更改为:

$this->set('states', array('this state')); 

下拉框将显示单个条目。我想让文本框填充信息而不是下拉框。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

为了确定,您是否尝试过设置表单输入的type

$this->Form->input('state', array('type' => 'text'));

可能没有填充输入,因为它使用单数“state”而不是“states”。我一直认为表单字段中填充了$this->data/$this->request->data数组中的数据。选择,复选框等是一种特殊情况,因为它们有一个选项数组,在您的大小输入的情况下填充$sizes

因此,假设您的表单模型为Order,并在$this->request->data中设置OrdersController

$this->request->data['Page']['state'] = 'this state';

如果由于某种原因这对您不起作用,您可以始终明确设置输入值:

$this->Form->input('state', array('value' => $states));