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


9

Чтобы восстановить параметр, я использую:

$myparam = JComponentHelper::getParams('com_mycomponent')->get('myparam');

Но как правильно хранить параметры компонента?


Я имею в виду помимо использования кнопки «Параметры»
веб-разработка КОБИЗ

Если вы не используете кнопку параметров, как вы получаете значение, которое хотите сохранить?
Дэвид Фрич

Не очень понимаю ваш вопрос. Из любого места, например, в другом контроллере компонентов, я хотел бы установить новое значение для некоторых других компонентов param.
Веб-разработка COBIZ

Вы можете попробовать создать компонент с помощью component-creator.com и просмотреть код, который он генерирует при добавлении параметров в ваш компонент.
Сёрен Бек Дженсен

Ответы:


15

Многие параметры нашего компонента зависят от внешних условий, поэтому нам необходимо периодически изменять их с некоторой ночной обработкой. Вот код, который мы используем (адаптированный для использования с com_content).

// Load the current component params.
$params = JComponentHelper::getParams('com_content');
// Set new value of param(s)
$params->set('show_title', 1);

// Save the parameters
$componentid = JComponentHelper::getComponent('com_content')->id;
$table = JTable::getInstance('extension');
$table->load($componentid);
$table->bind(array('params' => $params->toString()));

// check for error
if (!$table->check()) {
    echo $table->getError();
    return false;
}
// Save to database
if (!$table->store()) {
    echo $table->getError();
    return false;
}

1
Спасибо. Это выглядит очень здорово! Поэтому я не пропустил существующий метод, ему действительно нужен какой-то дополнительный код. Я отмечу ваш ответ ХОРОШО как можно скорее, когда я проверил его. (Но так как вы уже используете это, это, вероятно, правильный ответ в любом случае)
Веб-разработка COBIZ

1
Рад помочь ... не может идти в ногу с версиями Joomla, как хотелось бы, поэтому вполне может быть метод, но этот уже давно работает для нас ... ура
ВВП
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.