Yii Framework Forum: beforeSave передача параметров из action - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

beforeSave передача параметров из action Rate Topic: -----

#1 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 09 May 2009 - 08:30 AM

Читал на форуме  что $_Post не правильно использовать в моделе. Как можно из action  передавать переменные со значениями.
Пытался  воспользоваться  CHttpSession;
в  контролере
  $session=new CHttpSession;
  $session->open();
  $session['val3']=$value3; 

Затем  в  модели  в  методе beforeSave()
хочу  получить  переменную сохраненную  в сессии следующим  образом
  $session=new CHttpSession;
  $session->open();
$value3 =    $session['val3']; - получаю  пустое  значение

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

#2 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 09 May 2009 - 11:43 AM

Из экшинса в модель передаются параметры через атрибутес либо через
ModelName->param_name = ""
0

#3 User is offline   dikoy 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 33
  • Joined: 11-April 09

Posted 10 May 2009 - 02:53 PM

2 sergey.leonenko:
честно говоря, не совсем понятно, что хотелось сделать и почему не правильно использовать $_POST...

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

#4 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

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 справится с  моей задачей  более просто.



0

#5 User is online   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,632
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 11 May 2009 - 02:23 AM

Post и сессии и прочее нежелательно использовать  в модели, потому что это нарушение концепции MVC.
Вот как сохраняются данные из нескольких моделей:
http://www.yiiframew...oc/cookbook/19/

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

#6 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 11 May 2009 - 03:16 AM

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users