-1

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

http://img4.hostingpics.net/pics/72087272ok.png

我希望此页面(管理员/设置/索引)将各种设置(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 之类的地址的情况下进行编辑的页面

我的表设置是这样的

http://img4.hostingpics.net/pics/724403settings.png

4

1 回答 1

0

如果您询问如何格式化输出以生成“设置”页面,则需要手动执行或将某种元数据添加到表架构中,例如“field_type”。

现在 Cake 会自动为 boolean 或 tiny int 生成一个复选框,但是由于你有 varchars、ints、texts 等,这对你不起作用(pair大概是varchar或者text允许不同的可能值。

在不告诉 Cake 的情况下,你无法真正自动生成你想要的输出。

一种选择是将 a 添加field_type到表中,因此:

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_name') // output a textbox

但这并不完全理想。

于 2013-01-28T10:07:21.887 回答