-1

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')));
?> 

彼は私のすべての情報をうまく回復しています、私も更新することができます。問題は、最初のスクリーンショットと同じ結果を得る方法がわからないことです。彼はすべてをテキストエリアに配置しますが、場合によってはチェックボックスやドロップダウンが必要です。

テーブルから構成情報を取得し、admin / settings / edit/IDなどのアドレスを使用せずに編集できるページの作成方法を教えてください。

私のテーブル設定はここのようなものです

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

4

1 に答える 1

0

「設定」ページを生成するために出力をフォーマットする方法について質問している場合は、手動で行うか、「field_type」などのメタデータをテーブルスキーマに追加する必要があります。

これで、Cakeは、たとえばブール値または小さなintのチェックボックスを自動的に生成しますが、varchars、ints、textsなどがあるため、これは機能しません(pairおそらくvarchar、またはtext異なる可能な値を許可します)。

Cakeに通知せずに、必要な出力を実際に自動的に生成することはできません。

1つのオプションは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 に答える