Я имею дело со странной проблемой.У меня есть модель 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];