Перейти к содержимому


Фотография
- - - - -

Вопрос по редактированию поля через php


Лучший Ответ SmetDenis , 02 December 2014 - 10:06

$data[0]['value']." , 2222"


Лучше написать, иначе это бред какой-то.
$data[0]['value'] .= " , 2222";

Вот так должно работать, но выдает ошибку 0 Invalid Access Permission

Проверяйте права на сайте. Они считаются от того пользователя, от которого вы зашли на сайт.
Протестировать можно и на супер администраторе. Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 axeld

axeld

Отправлено 01 December 2014 - 16:22

Здравствуйте, скажите кто знает как выполнить такую задачу.
Нужно в модуле Joomla,  произвести редактирование товара.
А именно, в пользовательское поле добавить произвольные данные.
 
Я пишу так 
<?php
// no direct access
defined('_JEXEC') or die;
 
require_once(JPATH_ADMINISTRATOR . '/components/com_zoo/config.php'); // подключаем Zoo
require_once(JPATH_BASE . '/media/zoo/applications/jbuniversal/framework/jbzoo.php');// подключаем JBZoo
JBZoo::init(); // инициализация
 
$zoo = App::getInstance('zoo');
$item = $zoo->table->item->get('13884');
$element = $item->getElement('be08ac54-524f-4a3f-b682-4b6d9e3f9f65'); // element id получаем так 
$data = (array)$element->data(); // получаем данные
 
$date = $data." 22222222"; 
 
$element->bindData($data); // сохраняем данные обратно в элемент
$zoo->table->item->save($item); // сохраняем изменения в базу, переиндексация материала произойдет автоматически
, но так конечно не работает. Как в пользовательское поле 'be08ac54-524f-4a3f-b682-4b6d9e3f9f65' добавить "22222222" ?
  • 0

#2 SmetDenis

SmetDenis

Отправлено 01 December 2014 - 17:21

$data = (array)$element->data(); // получаем данные
$date = $data." 22222222"; 
А зачем вы к массиву добавляете строку?

$element->data() вернет объект JSONData, который намного удобнее массива.
Сдампите его структуру ( print_r($data) ) и в нужный ключ присвойте свое значение.

$data->set('value', '2222');

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 axeld

axeld

Отправлено 01 December 2014 - 17:34

<?php

// no direct access
defined('_JEXEC') or die;
 
require_once(JPATH_ADMINISTRATOR . '/components/com_zoo/config.php'); // подключаем Zoo
require_once(JPATH_BASE . '/media/zoo/applications/jbuniversal/framework/jbzoo.php');// подключаем JBZoo
JBZoo::init(); // инициализация
 
$zoo = App::getInstance('zoo');
$item = $zoo->table->item->get('13884');
$element = $item->getElement('be08ac54-524f-4a3f-b682-4b6d9e3f9f65'); // element id получаем так 
//$data = (array)$element->data(); // получаем данные
$data = $element->data();
 
// Ошибся 
 
echo "<pre>";
print_r($data);
echo "</pre>";
==

Сообщение отредактировал axeld: 01 December 2014 - 17:44

  • 0

#4 SmetDenis

SmetDenis

Отправлено 01 December 2014 - 17:45

Что показал print_r($data); ?
Или для простоты print_r((array)$data);
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 axeld

axeld

Отправлено 01 December 2014 - 17:49

Array
(
[0] => Array
(
[value] => 426318CP, MLF8223, V1DK23L6318, 016512, W01M586318, 36318KPP, 1DK23L1, US26318KPP, SA520235CP, RML76318CP, 1T15MPW9, P106318S
)

)

Как добраться до value ?

 

$data->set('value', '2222'); - так ошибка.

 

через массив я понимаю

  1. echo $data[0]['value'];

 

Как потом записать ? 

  1. $element->bindData($data); // сохраняем данные обратно в элемент
  2. $app->table->item->save($item); // сохраняем изменения в базу, переиндексация материала произойдет автоматически

====

 

 

 

 

 

Вот так должно работать, но выдает ошибку 0 Invalid Access Permission

 

<?php

// no direct access
defined('_JEXEC') or die;
 
require_once(JPATH_ADMINISTRATOR . '/components/com_zoo/config.php'); // подключаем Zoo
require_once(JPATH_BASE . '/media/zoo/applications/jbuniversal/framework/jbzoo.php');// подключаем JBZoo
JBZoo::init(); // инициализация
 
$zoo = App::getInstance('zoo');
$item = $zoo->table->item->get('13884');
$element = $item->getElement('be08ac54-524f-4a3f-b682-4b6d9e3f9f65'); // element id получаем так 
$data = (array)$element->data(); // получаем данные
$data[0]['value']." , 2222";
$element->bindData($data); // сохраняем данные обратно в элемент
$zoo->table->item->save($item); // сохраняем изменения в базу, переиндексация материала произойдет автоматически
 
Вот так должно работать, но выдает ошибку 0 Invalid Access Permission

Сообщение отредактировал axeld: 01 December 2014 - 18:06

  • 0

#6 axeld

axeld

Отправлено 02 December 2014 - 09:02

Ошибка из-за того , что у меня нет прав для добавления , почему ?


  • 0

#7 SmetDenis

SmetDenis

Отправлено 02 December 2014 - 10:06   Лучший Ответ

$data[0]['value']." , 2222"


Лучше написать, иначе это бред какой-то.
$data[0]['value'] .= " , 2222";

Вот так должно работать, но выдает ошибку 0 Invalid Access Permission

Проверяйте права на сайте. Они считаются от того пользователя, от которого вы зашли на сайт.
Протестировать можно и на супер администраторе.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 axeld

axeld

Отправлено 02 December 2014 - 10:14

то есть такое добавление не будет работать в модуле? 


  • 0

#9 SmetDenis

SmetDenis

Отправлено 02 December 2014 - 10:56

то есть такое добавление не будет работать в модуле?

Не важно откуда запускается код. Важно кто его запускает и с какими правами доступа (ACL).
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!