Как передать переменную из окна в процессор?

Добрый вечер.

Есть окошко, как из него передать переменную, например id родителя в процессор, чтобы уже в нём

можно было его получить
$this->getProperty('pattern_id');
и дальше его обрабатывать.

Окошко:

Timetable.window.CreateSessionItem = function(config) {
 	config = config || {};
        		      
 	Ext.applyIf(config,{
		title: 'Добавить новый сеанс',                           
 		url: Timetable.config.connector_url,
                
                params:{
                    action: 'mgr/timetable/sessions/create',
                    //pattern_id: 1
                },
                fields: [{
                    items: [{                            
                            layout: 'form',                            
                                items: [
                                    //{xtype: 'hidden',name: 'pattern_id',value:1},
                                    {xtype: 'hidden',name: 'pattern_id',value: '1234567'},
                                    {
                                    fieldLabel: 'Время сеанса',    
                                    xtype: 'timefield',  
                                    increment: 30,
                                    name: 'session_time',
                                    anchor: '50%'//,
                                   // style: {marginBottom: '10px'}
                                    },
                                    {
                                    fieldLabel: 'Стоимость сеанса',    
                                    xtype: 'textfield',                        
                                    name: 'session_price',
                                    anchor: '50%'
                                    }
                             
                            ]
                    }]
                }]
        });
        Timetable.window.CreateSessionItem.superclass.constructor.call(this,config);
 };
Ext.extend(Timetable.window.CreateSessionItem,MODx.Window);
Ext.reg('timetable-window-session-create',Timetable.window.CreateSessionItem);
a.drobushevskiy
26 апреля 2015, 22:51
modx.pro
1
1 468
-1

Комментарии: 25

Володя
27 апреля 2015, 08:06
0
ну у вас же эти варианты передачи как раз закоменчены, можно в params указать, можно скрытое поле сделать…
    a.drobushevskiy
    27 апреля 2015, 11:50
    0
    Оба варианта передачи — не передают переменную:
    процессор:
    public function beforeSet() {
                    echo "вывод в процессоре";
    		echo $pattern_id = $this->getProperty('pattern_id');
                    die();		
    	}
    консоль:
      Володя
      27 апреля 2015, 11:55
      0
      а на вкладке — headers в консоли что? Данные то передаются?
      Может вы их просто не так получаете…
        Володя
        27 апреля 2015, 11:57
        0
        сделайте вывод
        $this->getProperties()
          a.drobushevskiy
          27 апреля 2015, 12:02
          0
          вывод в процессоре
          Array
          (
          [action] => mgr/timetable/sessions/create
          [session_time] => 12:30 AM
          [session_price] => 123
          )
          Данные из формы окна передаются, а вот переменная нет.
            Володя
            27 апреля 2015, 12:03
            0
            давайте уж тогда весь свой процессор, че гадать то…
              a.drobushevskiy
              27 апреля 2015, 12:06
              0
              <?php
              /**
               * Create an Item
               */
              class SessionsItemCreateProcessor extends modObjectCreateProcessor {
              	public $objectType = 'SessionsItem';
              	public $classKey = 'SessionsItem';
                      //public $permission = '';
              	//public $languageTopics = array('sendex');
              	//public $permission = 'create';
              	
                      	public function beforeSet() {
                              echo "вывод в процессоре";
              		//echo $pattern_id = $this->getProperty('pattern_id');
                              $pattern_id = $this->getProperties('pattern_id');                
                              print_r($pattern_id);
                              die();		
              	}
              }
              return 'SessionsItemCreateProcessor';
                Володя
                27 апреля 2015, 12:08
                0
                а если так?
                public function process() {
                
                	print_r($this->getProperties());
                
                }
                  a.drobushevskiy
                  27 апреля 2015, 12:12
                  0
                  тоже самое
                    Володя
                    27 апреля 2015, 12:13
                    0
                    а beforeSet() свою выкинули?
                      a.drobushevskiy
                      27 апреля 2015, 12:14
                      0
                      <?php
                      /**
                       * Create an Item
                       */
                      class SessionsItemCreateProcessor extends modObjectCreateProcessor {
                      	public $objectType = 'SessionsItem';
                      	public $classKey = 'SessionsItem';
                              //public $permission = '';
                      	//public $languageTopics = array('sendex');
                      	//public $permission = 'create';
                      	
                              public function process() {
                      
                      	print_r($this->getProperties());
                              die();		
                              }
                              /*
                              public function beforeSet() {
                                  echo "вывод в процессоре";
                      		//echo $pattern_id = $this->getProperty('pattern_id');
                                      $pattern_id = $this->getProperties('pattern_id');                
                                      print_r($pattern_id);
                                      die();		
                      	}*/
                      }
                      return 'SessionsItemCreateProcessor';
                      Володя
                      27 апреля 2015, 12:36
                      0
                      И нет переменных?
                      Чудес то не бывает…
                      Скорее всего вы не всю информацию доносите или где то еще косячите… Но эта херь должна работать.
Сергей Фещуков
27 апреля 2015, 14:00
0
Сначала бы вывести это поле скрытое и посмотреть есть ли в нём нужное значение…
    a.drobushevskiy
    27 апреля 2015, 14:29
    0
    Значение я сам задаю:

    {xtype: 'hidden',name: 'pattern_id',value: '1234567'},
      Сергей Фещуков
      27 апреля 2015, 14:33
      0
      Если я правильно понимаю код, вы просто добавляете скрытое поле в форму.
      <input type="hidden" name="pattern_id" value="1234567" />
      И через форму это значение передаётся. Вот и надо проверить, имеется ли данное скрытое поле в форме и имеется ли значение в нужное поле. Либо через инструменты разработчика браузера, либо задав xtype=«textfield».
        a.drobushevskiy
        27 апреля 2015, 14:38
        0
        Если я делаю:

        {
                                            fieldLabel: 'Передаваемый параметр',    
                                            xtype: 'timefield',  
                                            increment: 30,
                                            name: 'pattern_id',
                                            anchor: '50%'//
                                            },
        то он передается в процессор, почему то не работает через:
        params:{
                            action: 'mgr/timetable/sessions/create',
                            pattern_id: 1
                        },
          Сергей Фещуков
          27 апреля 2015, 14:41
          0
          А зачем value удалили? Я же думал вы проверите, что value срабатывает (то есть ваше значение по-умолчанию вставляется). :)

          И ещё вариант. Попробуйте так:
          {xtype: 'hidden',name: 'pattern_id',defaultValue: '1234567'}
          или
          {name: 'pattern_id',value: '1234567',hidden: true}
          или
          {name: 'pattern_id',defaultValue: '1234567',hidden: true}
            a.drobushevskiy
            27 апреля 2015, 15:27
            0
            При
            {xtype: 'hidden',name: 'pattern_id',defaultValue: '1234567'}
            Пустое значение передается:
a.drobushevskiy
07 мая 2015, 18:49
0
Вроде разобрался в проблеме. Но теперь возникла следующая. pattern_id передается в процессор, всё сохраняется, но если передаётся pattern_id и в базе уже существует такое значение, то не сохраняются данные. Сохраняются данные тогда, когда pattern_id уникальный, хотя поле pattern_id не является AUTO_INCREMENT. Может кто сталкивался с таким? Ниже структуру таблицы привожу.

    Володя
    07 мая 2015, 19:02
    0
    схему, процессор…

    есть ?
    public function initialize() {
    //бла бла
    return parent::initialize();
    }
      a.drobushevskiy
      07 мая 2015, 19:16
      0
      Схема:
      <?xml version="1.0" encoding="UTF-8"?>
      <model package="timetable" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="timetable"
      	   version="1.1">
      
      	<object class="TimetableItem" table="timetable_items" extends="xPDOSimpleObject">
      		<field key="resource_id" dbtype="int" precision="10" phptype="integer" null="false" default="" />
      		<field key="eventdate" dbtype="date" phptype="date" null="false" />
      		<field key="sessions" dbtype="varchar" precision="255" phptype="string" null="true" default="" />
      		
      		<index alias="eventdate" name="eventdate" primary="false" unique="false" type="BTREE">
      			<column key="eventdate" length="" collation="A" null="false"/>
      		</index>
      	</object>
      	
      	<object class="PatternItem" table="timetable_pattern_items" extends="xPDOSimpleObject">
      		<field key="name" dbtype="varchar" precision="255" phptype="string" null="true" default="" />
      				
      		<index alias="name" name="name" primary="false" unique="false" type="BTREE">
      			<column key="name" length="" collation="A" null="false"/>
      		</index>
      	</object>
              
              <object class="SessionsItem" table="timetable_sessions_items" extends="xPDOSimpleObject">
      		<field key="pattern_id" dbtype="int" precision="10" phptype="integer" null="false" index="index" />                
      		<field key="session_time" dbtype="timestamp" phptype="timestamp" null="false" default="CURRENT_TIMESTAMP" />
                      <field key="session_price" dbtype="varchar" precision="255" phptype="string" null="true" default="" />
                      
      		<index alias="pattern_id" name="pattern_id" primary="false" unique="true" type="BTREE">
      			<column key="pattern_id" length="" collation="A" null="false" />
      		</index>
      	</object>
      
      </model>
      Процессор пустой:

      <?php
      
      class SessionsItemCreateProcessor extends modObjectCreateProcessor {
      	public $objectType = 'SessionsItem';
      	public $classKey = 'SessionsItem';
              public $permission = '';
          
      }
      return 'SessionsItemCreateProcessor';
        Володя
        07 мая 2015, 19:25
        0
        ну если нет в своем процесоре, значит смотрите что в родителе…
          Володя
          07 мая 2015, 19:38
          +1
          так епти у вас же
          unique="true"
            a.drobushevskiy
            07 мая 2015, 19:47
            0
            Да, вижу, блин. Вот чувствую, что где то накосячил с уникальностью индекса. Спасибо, буду внимательнее.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    25