CakePHP:未初始化的字符串偏移量:视图中为0

时间:2010-12-12 20:28:58

标签: cakephp model view notice

我正在处理一个奇怪的问题。 我有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');

现在,问题是:该组已正确选中,但其他两个(网站管理员和语言)在第一个选项上重置,具有 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];

1 个答案:

答案 0 :(得分: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));

这将为每个下拉列表创建一个“选择”下拉列表,并将它们与相关字段正确关联。