Как передать переменную из окна в процессор?
Есть окошко, как из него передать переменную, например 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);
Комментарии: 25
ну у вас же эти варианты передачи как раз закоменчены, можно в params указать, можно скрытое поле сделать…
а на вкладке — headers в консоли что? Данные то передаются?
Может вы их просто не так получаете…
Может вы их просто не так получаете…
сделайте вывод
$this->getProperties()
вывод в процессоре
Array
(
[action] => mgr/timetable/sessions/create
[session_time] => 12:30 AM
[session_price] => 123
)
Данные из формы окна передаются, а вот переменная нет.
Array
(
[action] => mgr/timetable/sessions/create
[session_time] => 12:30 AM
[session_price] => 123
)
Данные из формы окна передаются, а вот переменная нет.
давайте уж тогда весь свой процессор, че гадать то…
<?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';
а если так?
public function process() {
print_r($this->getProperties());
}
тоже самое
а beforeSet() свою выкинули?
<?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';
И нет переменных?
Чудес то не бывает…
Скорее всего вы не всю информацию доносите или где то еще косячите… Но эта херь должна работать.
Чудес то не бывает…
Скорее всего вы не всю информацию доносите или где то еще косячите… Но эта херь должна работать.
Сначала бы вывести это поле скрытое и посмотреть есть ли в нём нужное значение…
Значение я сам задаю:
{xtype: 'hidden',name: 'pattern_id',value: '1234567'},
Если я правильно понимаю код, вы просто добавляете скрытое поле в форму.
<input type="hidden" name="pattern_id" value="1234567" />
И через форму это значение передаётся. Вот и надо проверить, имеется ли данное скрытое поле в форме и имеется ли значение в нужное поле. Либо через инструменты разработчика браузера, либо задав xtype=«textfield».
Если я делаю:
{
fieldLabel: 'Передаваемый параметр',
xtype: 'timefield',
increment: 30,
name: 'pattern_id',
anchor: '50%'//
},
то он передается в процессор, почему то не работает через:params:{
action: 'mgr/timetable/sessions/create',
pattern_id: 1
},
А зачем value удалили? Я же думал вы проверите, что value срабатывает (то есть ваше значение по-умолчанию вставляется). :)
И ещё вариант. Попробуйте так:
И ещё вариант. Попробуйте так:
{xtype: 'hidden',name: 'pattern_id',defaultValue: '1234567'}
или {name: 'pattern_id',value: '1234567',hidden: true}
или {name: 'pattern_id',defaultValue: '1234567',hidden: true}
А другие варианты не работают?
Вроде разобрался в проблеме. Но теперь возникла следующая. pattern_id передается в процессор, всё сохраняется, но если передаётся pattern_id и в базе уже существует такое значение, то не сохраняются данные. Сохраняются данные тогда, когда pattern_id уникальный, хотя поле pattern_id не является AUTO_INCREMENT. Может кто сталкивался с таким? Ниже структуру таблицы привожу.
схему, процессор…
есть ?
есть ?
public function initialize() {
//бла бла
return parent::initialize();
}
Схема:
<?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';
ну если нет в своем процесоре, значит смотрите что в родителе…
так епти у вас же
unique="true"
Да, вижу, блин. Вот чувствую, что где то накосячил с уникальностью индекса. Спасибо, буду внимательнее.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.