web-dev-qa-db-fra.com

Obtenir l'élément com_contacts par identifiant?

Je dois obtenir un élément com_contacts de la même manière que Joomla (pour pouvoir par la suite réutiliser un modèle). Je sais que je peux obtenir l'élément en interrogeant directement la base de données, mais cela ne préparera pas les choses de la même manière que Joomla das dans com_content.

Je peux obtenir des contacts par catégorie id fine avec:

require_once JPATH_SITE . '/components/com_contact/helpers/route.php';
JLoader::import('joomla.application.component.model');
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_contact/models', 'ContentModel');
$categoryModel = JModelLegacy::getInstance('Category', 'ContactModel', array('ignore_request' => true));
$categoryModel->setState('category.id', 53);
$categoryModel->setState('list.ordering', 'a.name');
$categoryModel->setState('list.direction', 'asc');
$categoryModel->setState('filter.published', 1);
$contacts = $categoryModel->getItems();
echo '<pre><tt>';print_r($contacts[0]);

Comment pourrais-je obtenir un élément de contact par son ID d'élément?

TIA!

1
Marcel

Pour obtenir un contact unique par ID, utilisez le modèle Contact:

JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_contact/models', 'ContactModel');
$model = JModelLegacy::getInstance('Contact', 'ContactModel', array('ignore_request' => true));
$model->setState('contact.id', $contactId);
$model->setState('params', $params);
$contact = $model->getItem();

$contactId est l'identifiant du contact et $params sont les params. Les paramètres doivent être un objet de registre. Vous pouvez créer un nouvel objet de registre ou utiliser les paramètres app/composant, selon vos besoins:

use Joomla\Registry\Registry;
$params = new Registry;

ou

$params = JFactory::getApplication()->getParams();

ou

use Joomla\CMS\Component\ComponentHelper;
$params = ComponentHelper::getParams('com_contact');
1
Sharky