К содержанию

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


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

Есть окошко, как из него передать переменную, например 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
a.drobushevskiy
26 апреля 2015, 22:51
modx.pro
2 046
Реклама

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

Володя
Володя Эксперт
27 апреля 2015, 08:06
ну у вас же эти варианты передачи как раз закоменчены, можно в params указать, можно скрытое поле сделать…
    a.drobushevskiy
    a.drobushevskiy Старожил
    27 апреля 2015, 11:50
    Оба варианта передачи — не передают переменную:
    процессор:
    public function beforeSet() {
                    echo "вывод в процессоре";
    		echo $pattern_id = $this->getProperty('pattern_id');
                    die();		
    	}
    консоль:
      Володя
      Володя Эксперт
      27 апреля 2015, 11:55
      а на вкладке — headers в консоли что? Данные то передаются?
      Может вы их просто не так получаете…
        Володя
        Володя Эксперт
        27 апреля 2015, 11:57
        сделайте вывод
        $this->getProperties()
          a.drobushevskiy
          a.drobushevskiy Старожил
          27 апреля 2015, 12:02
          вывод в процессоре
          Array
          (
          [action] => mgr/timetable/sessions/create
          [session_time] => 12:30 AM
          [session_price] => 123
          )
          Данные из формы окна передаются, а вот переменная нет.
            Володя
            Володя Эксперт
            27 апреля 2015, 12:03
            давайте уж тогда весь свой процессор, че гадать то…
              a.drobushevskiy
              a.drobushevskiy Старожил
              27 апреля 2015, 12:06
              <?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
                а если так?
                public function process() {
                
                	print_r($this->getProperties());
                
                }
                  a.drobushevskiy
                  a.drobushevskiy Старожил
                  27 апреля 2015, 12:12
                  тоже самое
                    Володя
                    Володя Эксперт
                    27 апреля 2015, 12:13
                    а beforeSet() свою выкинули?
                      a.drobushevskiy
                      a.drobushevskiy Старожил
                      27 апреля 2015, 12:14
                      <?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
                      И нет переменных?
                      Чудес то не бывает…
                      Скорее всего вы не всю информацию доносите или где то еще косячите… Но эта херь должна работать.
Сергей Фещуков
Сергей Фещуков Проверенный
27 апреля 2015, 14:00
Сначала бы вывести это поле скрытое и посмотреть есть ли в нём нужное значение…
    a.drobushevskiy
    a.drobushevskiy Старожил
    27 апреля 2015, 14:29
    Значение я сам задаю:

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

        {
                                            fieldLabel: 'Передаваемый параметр',    
                                            xtype: 'timefield',  
                                            increment: 30,
                                            name: 'pattern_id',
                                            anchor: '50%'//
                                            },
        то он передается в процессор, почему то не работает через:
        params:{
                            action: 'mgr/timetable/sessions/create',
                            pattern_id: 1
                        },
          Сергей Фещуков
          Сергей Фещуков Проверенный
          27 апреля 2015, 14:41
          А зачем 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
            a.drobushevskiy Старожил
            27 апреля 2015, 15:27
            При
            {xtype: 'hidden',name: 'pattern_id',defaultValue: '1234567'}
            Пустое значение передается:
              Сергей Фещуков
              Сергей Фещуков Проверенный
              27 апреля 2015, 16:29
              А другие варианты не работают?
    a.drobushevskiy
    a.drobushevskiy Старожил
    07 мая 2015, 18:49
    Вроде разобрался в проблеме. Но теперь возникла следующая. pattern_id передается в процессор, всё сохраняется, но если передаётся pattern_id и в базе уже существует такое значение, то не сохраняются данные. Сохраняются данные тогда, когда pattern_id уникальный, хотя поле pattern_id не является AUTO_INCREMENT. Может кто сталкивался с таким? Ниже структуру таблицы привожу.

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

      есть ?
      public function initialize() {
      //бла бла
      return parent::initialize();
      }
        a.drobushevskiy
        a.drobushevskiy Старожил
        07 мая 2015, 19:16
        Схема:
        <?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
          ну если нет в своем процесоре, значит смотрите что в родителе…
            Володя
            Володя Эксперт
            07 мая 2015, 19:38
            так епти у вас же
            unique="true"
              a.drobushevskiy
              a.drobushevskiy Старожил
              07 мая 2015, 19:47
              Да, вижу, блин. Вот чувствую, что где то накосячил с уникальностью индекса. Спасибо, буду внимательнее.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      25