1

私は奇妙な問題を扱っています。Configこれらの関連付けとともに、モデルがあります。

var $belongsTo = array(
    'Language' => array(
        'className' => 'Language',
        'foreignKey' => 'default_language',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Webmaster' => array(
        'className' => 'User',
        'foreignKey' => 'webmaster',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Group' => array(
        'className' => 'Group',
        'foreignKey' => 'default_group',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
);

私のConfigsController中で私はedit()行動を起こします:

function edit($id = null) {
    if (!$id && empty($this->data)) {
        $this->Session->setFlash(__('Invalid config', true));
        $this->redirect(array('action' => 'index'));
    }
    if (!empty($this->data)) {
        if ($this->Config->save($this->data)) {
            $this->Session->setFlash(__('The config has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The config could not be saved. Please, try again.', true));
        }
    }
    if (empty($this->data)) {
        $this->data = $this->Config->read(null, $id);
    }
    $languages = $this->Config->Language->find('list');
    $webmasters = $this->Config->Webmaster->find('list');
    $groups = $this->Config->Group->find('list');
    $this->set(compact('languages', 'groups', 'webmasters'));
}

そして私のedit.ctp見解では、私は持っています:

echo $this->Form->input('Language');
echo $this->Form->input('Webmaster');
echo $this->Form->input('Group');

ここで問題があります。グループは正しく選択されていますが、他の2つ(ウェブマスターと言語)は最初のオプションでリセットされ、属性がなく selected、「ボーナス」として、言語選択で次のエラーが表示されます。Notice (8): Uninitialized string offset: 0 [CORE/cake/libs/view/helper.php, line 859]

私はほぼ2時間苦労し、この奇妙な問題の問題を見つけることができませんでした。手伝っていただけませんか?ありがとうございました!

編集

これは、デバッガーが示すものです。

Helper::__selectedArray() - CORE/cake/libs/view/helper.php, line 859

Helper :: value()-CORE /cake / libs / view / helper.php、行712 Helper :: _ initInputField()-CORE /cake / libs / view / helper.php、行753 FormHelper :: _ initInputField()-CORE /cake/libs/view/helpers/form.php、2182行目FormHelper :: select()-CORE /cake / libs / view / helpers / form.php、1438行目FormHelper :: input()-CORE /cake / libs /view/helpers/form.php、行882インクルード-APP / views / configs / edit.ctp、行10 View :: _ render()-CORE /cake / libs / view / view.php、行723 View :: render ()-CORE / Cake / libs / view / view.php、行419 Controller :: render()-CORE /cake / libs / controller / controller.php、行913 Dispatcher :: _ invoke()-CORE /cake / dispatcher .php、207行目Dispatcher :: dispatch()-CORE /cake / dispatcher.php、171行目[メイン]-APP / webroot / index.php、83行目

そして、「コード」タブで:

 if (!empty($data)) {
        foreach ($data as $var) {
            $array[$var[$key]] = $var[$key];
4

1 に答える 1

1

代わりに、ビューで次のコードを使用できます。

echo $this->Form->input('default_language', array('options' => $languages));
echo $this->Form->input('webmaster', array('options' => $webmasters));
echo $this->Form->input('default_group', array('options' => $groups));

これにより、それぞれに「選択」ドロップダウンが作成され、関連するフィールドに正しく関連付けられます。

于 2010-12-13T02:44:23.013 に答える