Cakephp 设置页面和多编辑行

Cakephp 设置页面和多编辑行,cakephp,Cakephp,我想为我的CMS做一个这样的配置页面 我希望这个页面(admin/settings/index)能让我获得表格中的各种设置(ID 1到21),如果有变化,我可以用这个表单进行更新 经过3天不太富有成效的研究,我发现了一些东西。我将我的设置放入控制器: admin_index public function () { if (!empty($this->data)) { $this->Setting->saveAll($this->request-

我想为我的CMS做一个这样的配置页面

我希望这个页面(admin/settings/index)能让我获得表格中的各种设置(ID 1到21),如果有变化,我可以用这个表单进行更新

经过3天不太富有成效的研究,我发现了一些东西。我将我的设置放入控制器:

admin_index public function () {
    if (!empty($this->data)) {
        $this->Setting->saveAll($this->request->data['Setting']);
    } else { 
    $this->request->data['Setting'] = Set::combine($this->Setting->find('all'), 
        '{n}. Setting.id', '{n}. Setting');
    }
} 
我的看法是:

<?php
echo $this->Form->create('Setting', array ('class' => 'form-horizontal'));

foreach($this->request->data['Setting'] as $key => $value) {
    echo $this->Form->input('Setting.' . $key . '.pair');
    echo $this->Form->input('Setting.' . $key . '.id');
}

echo $this->Form->end(array('class' => 'btn btn-primary', 'label' => 'Save',
     'value' => 'Update!', 'div' => array ('class' => 'form-actions')));
?> 

他很好地恢复了我的所有信息,我甚至可以更新。问题是,我真的不知道如何才能得到与第一张截图相同的结果。他将所有内容都放在文本区域,而在某些情况下,我需要复选框和/或下拉列表

请帮助我或向我解释如何创建一个页面,从我的表中检索配置信息,并允许我在不使用admin/settings/edit/ID等地址的情况下进行编辑

我的桌子设置是这样的


如果您询问如何格式化输出以生成“设置”页面,则需要手动执行,或向表架构添加某种元数据,如“字段类型”

例如,现在Cake将自动为布尔值或极小的int值生成一个复选框,但由于您有varchar、int、text等,这对您不起作用(
pair
可能是
varchar
text
,以允许不同的可能值

如果不告诉Cake,就无法真正自动生成所需的输出

一个选项是向表中添加一个
字段类型
,以便:

key            value        field
site_name      My Site      input
site_online    1            checkbox
meta_desc      [some text]  textarea
什么的

foreach($settings as $setting) {
  echo $this->Form->{$setting['field']}($setting['key'], 
      array('value' => $setting['value']));
}
你想干什么就干什么

或者
if($key=='site\u name')//输出一个文本框


但这并不理想。

你问题中的代码格式不好/无效-你在问..如何设置表单样式?为什么在代码中到处添加空格?它根本不可读!如果你在Config/core.php中将调试设置为
2
,你会得到很多错误。请确保我们将其设置为
eall
ll.你会注意到变量
$This
不存在!它应该用小写字母“t”(
$This
)来写。在你验证了你的代码并更新了问题I之后(我想我也可以代表所有其他人发言)我会看一看。我无法停止思考
$This
,所以我不得不编辑它。很抱歉,空格通常不是这样的。我想谷歌翻译会改变一点我的代码^^^我会试试的,谢谢