Выборка в "классном" процессоре
        Василий, форкнул твой miniPayment, и затачиваю под свои нужды, а заодно разбираюсь с процессорами.
Из всех примочек что налепил, пока не получилась одна — задумка была в том, чтобы дополнить miniPayment кастомными полями, т.к у разных платежных агрегаторов могут быть разные поля,
так вот, суть задачи:
1.В табличку modx_minipayment_operation добавилось новое поле, пусть это будет txnid int(11)
2.Проапдейтил схему, в итоге поле забиндилось в model.
Цель-заставить процессор miniPaymentItemUpdateProcessor (mgr/operation/update.class.php) брать объект не по ID а по TXNID.
Что я только не делал, но всеравно объект берется по полю ID, быть может от того, что ID в таблице это PK?
В вызове процессора, например я пробовал менять
Здесь я так понимаю нужно как-то в объекте переопределить параметры селекта для выбора, прошу помощи, Т.к метод пока не привел к результату…
    
    
                                                                                
            Из всех примочек что налепил, пока не получилась одна — задумка была в том, чтобы дополнить miniPayment кастомными полями, т.к у разных платежных агрегаторов могут быть разные поля,
так вот, суть задачи:
1.В табличку modx_minipayment_operation добавилось новое поле, пусть это будет txnid int(11)
2.Проапдейтил схему, в итоге поле забиндилось в model.
Цель-заставить процессор miniPaymentItemUpdateProcessor (mgr/operation/update.class.php) брать объект не по ID а по TXNID.
Что я только не делал, но всеравно объект берется по полю ID, быть может от того, что ID в таблице это PK?
В вызове процессора, например я пробовал менять
$response = $this->runProcessor('mgr/operation/update', array('id' => $id, 'status' => $status));в параметре массива с передачай данных на $response = $this->runProcessor('mgr/operation/update', array('txnid' => $id, 'status' => $status));но это так же не повлияло на результат…Здесь я так понимаю нужно как-то в объекте переопределить параметры селекта для выбора, прошу помощи, Т.к метод пока не привел к результату…
Комментарии: 5
                У modObjectProcessor, кажется, есть свойство $primaryKey = 'id'.
Нужно его переопределить в твоем процессоре.
Ну или просто переопредели метод initialize() — именно он достает нужный объект по id.
                    Нужно его переопределить в твоем процессоре.
Ну или просто переопредели метод initialize() — именно он достает нужный объект по id.
                1 способ не удался=)
попробовал передать в процессор
                    попробовал передать в процессор
$response = $this->runProcessor('mgr/operation/update', array('txnid' => $id, 'status' => $status));ну и в процессореpublic $primaryKeyField='txnid';не помогло, щас в инициализации перепишу, думаю это самое логичное, судя по всему +)            
                Кстати все получилось, довольно просто, и я более менее разобрался в работе процессора.
Для того чтоб взять произвольный объект нужно просто переопределить его на стадии инициализации.
                    Для того чтоб взять произвольный объект нужно просто переопределить его на стадии инициализации.
//переинициализируем получение объета,для записи по ID полученной транзакции
    
    /**
     * {@inheritDoc}
     * @return boolean
     */
    public function initialize() {
        $txn = $this->getProperty('txnid');
        $this->object = $this->modx->getObject($this->classKey, array('txnid' => $txn));
        if (empty($this->object))
        {
            return $this->modx->lexicon('access_denied');
        }
        return true;
    }            
                Верно, переопределение $primaryKeyField не прокатило, так как у тебя txnid не первичный ключ таблицы.
Что то я не сообразил =)
                    Что то я не сообразил =)
                =)))Вообще эти ОРМ блин, хороши конечно… Но не привычно…
Я больше доверяю практике и опыту например в своих EE проектах на работе, поэтому в связке Java с Oracle общение идет на PL/SQL, без всяких посреднеческих ОРМ… Конечно есть и минусы, вроде возможных XSS, но гибкость на высоте, как и скорость работы… Тяжело переучить себя =)
                    Я больше доверяю практике и опыту например в своих EE проектах на работе, поэтому в связке Java с Oracle общение идет на PL/SQL, без всяких посреднеческих ОРМ… Конечно есть и минусы, вроде возможных XSS, но гибкость на высоте, как и скорость работы… Тяжело переучить себя =)
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.