设置页面和多个编辑行

时间:2013-01-27 21:53:19

标签: cakephp

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

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

我想要这个页面(admin / settings / index)让我得到各种设置(ID 1到21)来到我的桌子,如果有变化,我可以用这种形式进行更新

经过3天没有特别富有成效的研究后,我找到了一些东西。我输入了我的SettingsController:

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')));
?> 
他正在恢复我的所有信息,我甚至可以更新。麻烦的是,我真的不知道如何才能获得与我的第一个截图相同的结果。他把所有东西放在textarea中,而在某些情况下我想要复选框和/或下拉。

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

我的表设置就像这样

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

1 个答案:

答案 0 :(得分:0)

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

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

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

一种选择是在表格中添加text,所以:

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

但这并不完全理想。