beforeSave передача параметров из action

Читал на форуме  что $_Post не правильно использовать в моделе. Как можно из action  передавать переменные со значениями.

Пытался  воспользоваться  CHttpSession;

в  контролере

  $session=new CHttpSession;

  $session->open();

  $session['val3']=$value3; 

Затем  в  модели  в  методе beforeSave()

хочу  получить  переменную сохраненную  в сессии следующим  образом

  $session=new CHttpSession;

  $session->open();

$value3 =    $session['val3']; - получаю  пустое  значение

Что-то не понятно происходящее. Не пошло и  с свойством public $val  -  объявлял  в  модели  и поэтому  одно осталось только  массив $_POST

Из экшинса в модель передаются параметры через атрибутес либо через

ModelName->param_name = ""

2 sergey.leonenko:

честно говоря, не совсем понятно, что хотелось сделать и почему не правильно использовать $_POST…

не то, чтобы я знал ответ (тем более не понимая о чем речь :), но интересно однако, мож я каким кривым путем вечно хожу :)

на форме  кроме  элементов управления (поля ввода, выпадающие  списки чек боксы) , которые принадлежат  одной  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 справится с  моей задачей  более просто.

Post и сессии и прочее нежелательно использовать  в модели, потому что это нарушение концепции MVC.

Вот как сохраняются данные из нескольких моделей:

http://www.yiiframew…oc/cookbook/19/

В твоем случае, думаю, правильный путь - через public $val, только Yii любит сбрасывать значения, если они не принадлежат массиву safeAttributes (в общем-то, правильно делает). Попробуй переопределить функцию safeAttributes в модели и добавить в массив твое поле.

так  и  сделал Только  в safeAttributes  занес то св-во модели, которое  изменяется из формы, а  то что  с action  просто объявил как public