PEAR::Quick_Form setSelected

saa

Guest
PEAR::Quick_Form setSelected

Господа хорошие, подскажите если можете - в чем загвоздка.
Раньше делел формы используя PEAR::Quick_Form и метод
HTML_QuickForm_select::setSelected() работал нормально.

require_once "HTML/QuickForm.php";
...
$some_select = &HTML_QuickForm::createElement('select', 'brand', null , $db_brands);
$some_select->setSelected($_SESSION['current_brand']);
...

Теперь делаю формы на основе Quick_Form_Controller

require_once 'HTML/QuickForm/Controller.php';
...
function buildForm()
{
...
$some_select =& $this->createElement('select', 'brand', null, $db_brands);
$some_select->setSelected($_SESSION['current_brand'])
#^^^^^^^^^^^^^^^^неработает!
...
}
...

Ну не работает метод setSelected я уж ему и ручками индекс скармливал - все равно не работает :(
Флажек $this->_formBuilt = true; не устанавливаю.
Есть какие-нибудь идеи? Или "Controller" - сырье? Исходники смотрел - там ничерта не понятно (3 строки)

-~{}~ 21.07.04 00:01:

причем, getSelected() выдает нормальное значение, по видимому что то с рендерингом.

-~{}~ 21.07.04 00:12:

после "сабмита" выбор, чудесным образом сохраняется а getSelected() возвращает значение, установленное setSelected();

-~{}~ 22.07.04 16:53:

Выяснил еще такой факт: при первом рендеринге формы setSelected работает. Он не работает именно когда я дергаю jump на эту форму, хотя предварительно насильно делаю buildFrom();

PHP:
class subformBack extends HTML_QuickForm_Action 
{
...
        $target->buildForm();
        return $target->handle('jump');
...
}
ничего не понимаю... версия php 4.3.8
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: PEAR::Quick_Form setSelected

Автор оригинала: saa
Флажек $this->_formBuilt = true; не устанавливаю.

...

Он не работает именно когда я дергаю jump на эту форму, хотя предварительно насильно делаю buildFrom();
Если ты считаешь, что твой способ использования правильней того, который описан в официальных примерах и документации, то у тебя никакие библиотеки "работать не будут".

Есть какие-нибудь идеи? Или "Controller" - сырье? Исходники смотрел - там ничерта не понятно (3 строки)
Жуть-то какая!
 

saa

Guest
Sad Spirit, я действительно использую Controller немного по своему. Пытаюсь реализовать модель не простого визарда, а формы с подформами. Примеры я изучил. Но мне не подходят не wizard, не multitabs. Мне необходимо, что бы при нажатии на кнопку осуществлялся переход на "подчиненную" форму в контроллере.
Для этого я создаю на базе класса HTML_QuickForm_Action свои два класса Action'ов subformJump и subformBack. Первый кладет в 'hidden' на целевой форме имя вызывающей формы, второй осуществляет возврат на форму с именем хранящемся в этом 'hidden'е. В сессию данные подчиненной формы не сохраняются, потому что эти формы, в модифицированном мной action'е Submit, просто заносят данные в базу. А вызывающая форма должна в select'ах показать текущий добавленный пункт($_SESSION['current_brand']). Такая идея.

А как правильно сделать обновление вызывающей формы в Action'е? Рыть, я так понимаю, надо в моем submit' е?

P.S. Насчет "Controller- сырье?", извини, действительно погорячился. Штука классная - мне нравится, просто это первая мысль, которая возникла когда я столкнулся с этой проблемой. По видимому это рефлекс, выработанный во мне микрософтом :)) К тому же я не знал, что это наше, родное. В исходниках я уже основательно порыся но понял только, что данные сохраняются, а что с ними дальше делается очень сложно понять.

-~{}~ 22.07.04 18:40:

после "сабмита" выбор, чудесным образом сохраняется а getSelected() возвращает значение, установленное setSelected();
Здесь имеется ввиду стандартный HTML_QuickForm_Action_Submit

-~{}~ 22.07.04 23:56:

Извиняюсь за тупость, вроде все заработало - вместо jump я теперь дергаю display (доперло при изучении рпботы HTML_QuickForm_Action_Submit), и все рефрешится вроде. Но если честно до конца работу action'ов я еще не просек. Ничего у меня в памяти не провисает, когда я завершаю perform такой строкой:
PHP:
           return $target->handle('display');
возвращаясь из подчиненной формы?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: saa
Sad Spirit, я действительно использую Controller немного по своему. Пытаюсь реализовать модель не простого визарда, а формы с подформами. Примеры я изучил. Но мне не подходят не wizard, не multitabs. Мне необходимо, что бы при нажатии на кнопку осуществлялся переход на "подчиненную" форму в контроллере.
Для этого я создаю на базе класса HTML_QuickForm_Action свои два класса Action'ов subformJump и subformBack. Первый кладет в 'hidden' на целевой форме имя вызывающей формы, второй осуществляет возврат на форму с именем хранящемся в этом 'hidden'е. В сессию данные подчиненной формы не сохраняются, потому что эти формы, в модифицированном мной action'е Submit, просто заносят данные в базу. А вызывающая форма должна в select'ах показать текущий добавленный пункт($_SESSION['current_brand']). Такая идея.

А как правильно сделать обновление вызывающей формы в Action'е? Рыть, я так понимаю, надо в моем submit' е?
А, ну понятно. Есть списки выбора, есть возможность добавить в них свой вариант, для чего есть специальная форма

Ну либо действительно делать в 'display' setSelected() (почему он у тебя не работает не знаю, скорее всего данные потом где-то затираются), либо при сабмите вспомогательной формы надругаться над значениями основной, лежащими в container()'е.

Я бы, наверное, сделал вторым вариантом.

Извиняюсь за тупость, вроде все заработало - вместо jump я теперь дергаю display (доперло при изучении рпботы HTML_QuickForm_Action_Submit), и все рефрешится вроде. Но если честно до конца работу action'ов я еще не просек. Ничего у меня в памяти не провисает, когда я завершаю perform такой строкой:
PHP:
           return $target->handle('display');
возвращаясь из подчиненной формы?
У тебя при этом не будет выполняться redirect, со всеми неприятными последствиями (попробуй нажать Refresh).
 
Сверху