Дмитрий
Там метод save
Дмитрий
Его и переопредели
Vitaly
В контролере
Так я так и сделал. И в нем приведенный выше код, а дальше parent::save. Но оно не работает.
Дмитрий
Потому что так не работает
Vitaly
$key
Vitaly
В общем в контроллере переопределен save, в нем этот код, а дальше вызов родительского save. Ну а как еще тут сделать?
Vitaly
Но вот почему не изменяется post я не понимаю
Дмитрий
Я не помню если честно, надо поглядеть, могу попозже посмотреть
Дмитрий
Но вот почему не изменяется post я не понимаю
А там не так пишется, можешь вывести после того как ты присвоил
Дмитрий
Посмотреть
Дмитрий
GetArray у инпута
Vitaly
public function save($key = null, $urlVar = null) { $data = $this->input->post->get('jform', array(), 'array'); $data['blabla'] = 0; $this->input->post->set('jform', $data); parent::save($key, $urlVar)
Vitaly
GetArray у инпута
Оно и так и так работает. В целом-то данные формы загружаются нормально в $data.
Vitaly
@Septdir, не знаешь в чем тут соль?
Дмитрий
Там валидация берет xml и от неё вадидирцет
Дмитрий
Лишние выкидываемся может
Дмитрий
Надо посмотреть на код
Дмитрий
Я просто переопределяю весь save
Дмитрий
Или в table классах делаю такое
Vitaly
Надо посмотреть на код
Так смотреть больше и нечего) Остальное из FormController
Дмитрий
Он берет xml и по нему приходит
Дмитрий
Не исключено что лишние просто выкидывает
Vitaly
У меня не новая переменная, а та, которая приходит из формы. Просто значение меняю, условно с 0 на 1
Дмитрий
Если тебе прям сейчас нужен ответ
Дмитрий
Там validateData идёт в сохранение в базу
Vitaly
Да, вижу. Но я пробовал просто подменить значение в валидной переменной. Ладно. Придется идти другим, велосипедным путем😊
Vladimir
там не все так просто
Vladimir
решение подсказал @Septdir
Vladimir
и я его воткнул в радикал
Vladimir
мне там параметры плагина надо обновлять
Vitaly
Т.е просто вот так просто не подменить?
Igor
Т.е просто вот так просто не подменить?
А тебе что надо подменять?
Vladimir
Т.е просто вот так просто не подменить?
https://github.com/Delo-Design/radicalform/blob/3611e25195f9edbe7ae0957f23f75c8abf921486/radicalform.php#L63
Igor
Параметры дело отдельное.
Vladimir
Т.е просто вот так просто не подменить?
там эти параметры ещё кешируются
Vitaly
Да, это другое. Это параметры XML, а тут значение засабмиченной формы.
Igor
content и каноничные компопоненты можно так. https://github.com/joomla/joomla-cms/blob/staging/libraries/src/MVC/Controller/FormController.php#L707
Igor
Если меняешь что-то в своем компоненте к контролере то можно так. https://github.com/SeptdirWorkshop/SWJProjects/blob/master/com_swjprojects/admin/controllers/version.php#L127
Igor
Подменять post импут не факт что выйдет, ибо как-бы и не должно получиться.
Igor
В общем все зависит от контекста, где ты это делаешь и что хочешь получить в замен
Igor
еще возможно лучше подойдет модель. Ну или вовсе переписать save
Igor
Модель или контролер оперделяются легко. Если у тебя надо поменять входишь post то контролер, если же это впринципе смена формата данных для сохранеия, то модель.
Igor
Так что стоит учитывать, что перед тем как котролер передаст данные в метод save модели, они их обратает методом validation, который в свою очередь отрежет те данные которые не соотвествуют form.xml
Igor
@wedalru Вот как-то так.
Igor
Вот я прямо так и делал. Не работает, увы.
А у тебя есть поле в форме поле name=blabla?
Vitaly
Да
Igor
Да
А фильтрация у поля какая?
Igor
И вообще контекст нужен.
Vitaly
Raw
mmth
Вот я прямо так и делал. Не работает, увы.
а вот это не оно // Send an object which can be modified through the plugin event $objData = (object) $data; $app->triggerEvent( 'onContentNormaliseRequestData', array($this->option . '.' . $this->context, $objData, $form) ); $data = (array) $objData;
Vitaly
Ладно. Попробую сделать иначе, хоть и не так красиво. Хотелось в 2 строчки просто😊
Vitaly
Спасибо, ребят 🙏
mmth
Онон но это для плагина.
ну а в чем проблема, если полностью функцию скопировать и с data сделать всё что надо, не передавая обратно в конце parent::save($key, $urlVar)
Igor
Ладно. Попробую сделать иначе, хоть и не так красиво. Хотелось в 2 строчки просто😊
Так можно в две строчи, если ты даш контекст. P.S у тебя в коде this->input->post->set А надо this->input->set
Igor
Ну и опять таки form.xml
Igor
А вот это я не пробовал))) Сейчас проверим)
Ну проверь. и лови данные раньше не model->save а model->validate
mmth
Я в контроллере
https://t.me/projoomla/29625
Vitaly
ну а в чем проблема, если полностью функцию скопировать и с data сделать всё что надо, не передавая обратно в конце parent::save($key, $urlVar)
Грязно. Много лишнего кода ради одной строчки. А так да, вполне рабочий приемчик получится.
mmth
Грязно. Много лишнего кода ради одной строчки. А так да, вполне рабочий приемчик получится.
$validData ещё стоит ковырнуть, я так понимаю после строчек 713 с ними работа идет вместо $data // Test whether the data is valid. $validData = $model->validate($form, $data);
mmth
Да, я думал, что может быть дело в этом. Но как оно может понимать, что POST подменили?
$this->input->post->set('jform', $data); точно ли срабатывает так как кажется, можно не меняются данные
Dmitry
Игорь выше писал этот способ
Vitaly
Но у Игоря в примере выше, ага
Vitaly
Работало
Dmitry
Так у тебя наверное дальше режет
Dmitry
Отладку включи ))