Читал на форуме что $_Post не правильно использовать в моделе. Как можно из action передавать переменные со значениями.
Пытался воспользоваться CHttpSession;
в контролере
$session=new CHttpSession;
$session->open();
$session['val3']=$value3;
Затем в модели в методе beforeSave()
хочу получить переменную сохраненную в сессии следующим образом
$session=new CHttpSession;
$session->open();
$value3 = $session['val3']; - получаю пустое значение
Что-то не понятно происходящее. Не пошло и с свойством public $val - объявлял в модели и поэтому одно осталось только массив $_POST
Page 1 of 1
beforeSave передача параметров из action
#2
Posted 09 May 2009 - 11:43 AM
Из экшинса в модель передаются параметры через атрибутес либо через
ModelName->param_name = ""
ModelName->param_name = ""
#3
Posted 10 May 2009 - 02:53 PM
2 sergey.leonenko:
честно говоря, не совсем понятно, что хотелось сделать и почему не правильно использовать $_POST...
не то, чтобы я знал ответ (тем более не понимая о чем речь
, но интересно однако, мож я каким кривым путем вечно хожу
честно говоря, не совсем понятно, что хотелось сделать и почему не правильно использовать $_POST...
не то, чтобы я знал ответ (тем более не понимая о чем речь
#4
Posted 11 May 2009 - 01:16 AM
на форме кроме элементов управления (поля ввода, выпадающие списки чек боксы) , которые принадлежат одной AR есть еще элементы принадлежащие другой таблице. Так вот для того чтобы в AR работал метод afterSave е нужно в него каким-то образом было передать $_POST этих элементов , ну и соответственно выполнить обработку этих данных с занесением в базу.
Для понимания структура таблицы для которой создана AR
CREATE TABLE base.userlist
(
id smallint NOT NULL DEFAULT nextval('base.userlist_id_seq'::regclass), -- идентификатор пользователя
"login" character varying(20), -- логин пользователя
"name" character varying(128), -- Ф.И.О пользователя
psw character varying(40), -- пароль пользователя
email character varying, -- e-Mail пользователя
CONSTRAINT userlist_pkey PRIMARY KEY (id)
)
WITH (OIDS=FALSE);
ALTER TABLE base.userlist OWNER TO postgres;
а это таблица которая не принадлежит AR
CREATE TABLE base.userlistgroups
(
id smallint NOT NULL DEFAULT nextval('base.userlistgroups_id_seq'::regclass),
id_userlist smallint NOT NULL,
id_groups smallint NOT NULL,
CONSTRAINT userlistgroups_pkey PRIMARY KEY (id),
CONSTRAINT userlistgroups_fk_id_groups FOREIGN KEY (id_groups)
REFERENCES base.groups (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT userlistgroups_fk_id_userlist FOREIGN KEY (id_userlist)
REFERENCES base.userlist (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (OIDS=FALSE);
ALTER TABLE base.userlistgroups OWNER TO postgres;
Только что увидел что вышел релиз 1,05 возможно его AR справится с моей задачей более просто.
Для понимания структура таблицы для которой создана AR
CREATE TABLE base.userlist
(
id smallint NOT NULL DEFAULT nextval('base.userlist_id_seq'::regclass), -- идентификатор пользователя
"login" character varying(20), -- логин пользователя
"name" character varying(128), -- Ф.И.О пользователя
psw character varying(40), -- пароль пользователя
email character varying, -- e-Mail пользователя
CONSTRAINT userlist_pkey PRIMARY KEY (id)
)
WITH (OIDS=FALSE);
ALTER TABLE base.userlist OWNER TO postgres;
а это таблица которая не принадлежит AR
CREATE TABLE base.userlistgroups
(
id smallint NOT NULL DEFAULT nextval('base.userlistgroups_id_seq'::regclass),
id_userlist smallint NOT NULL,
id_groups smallint NOT NULL,
CONSTRAINT userlistgroups_pkey PRIMARY KEY (id),
CONSTRAINT userlistgroups_fk_id_groups FOREIGN KEY (id_groups)
REFERENCES base.groups (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT userlistgroups_fk_id_userlist FOREIGN KEY (id_userlist)
REFERENCES base.userlist (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (OIDS=FALSE);
ALTER TABLE base.userlistgroups OWNER TO postgres;
Только что увидел что вышел релиз 1,05 возможно его AR справится с моей задачей более просто.
#5
Posted 11 May 2009 - 02:23 AM
Post и сессии и прочее нежелательно использовать в модели, потому что это нарушение концепции MVC.
Вот как сохраняются данные из нескольких моделей:
http://www.yiiframew...oc/cookbook/19/
В твоем случае, думаю, правильный путь - через public $val, только Yii любит сбрасывать значения, если они не принадлежат массиву safeAttributes (в общем-то, правильно делает). Попробуй переопределить функцию safeAttributes в модели и добавить в массив твое поле.
Вот как сохраняются данные из нескольких моделей:
http://www.yiiframew...oc/cookbook/19/
В твоем случае, думаю, правильный путь - через public $val, только Yii любит сбрасывать значения, если они не принадлежат массиву safeAttributes (в общем-то, правильно делает). Попробуй переопределить функцию safeAttributes в модели и добавить в массив твое поле.
#6
Posted 11 May 2009 - 03:16 AM
так и сделал Только в safeAttributes занес то св-во модели, которое изменяется из формы, а то что с action просто объявил как public
Share this topic:
Page 1 of 1

Help













