XMF Modulehelper
De klasse Xmf\Module\Helper biedt een eenvoudige manier om toegang te krijgen tot modulegerelateerde informatie, configuraties, handlers en meer. Het gebruik van de modulehelper vereenvoudigt uw code en vermindert de boilerplate.
Overzicht
Section titled “Overzicht”De modulehelper biedt:
- Vereenvoudigde configuratietoegang
- Ophalen van moduleobjecten
- Instantiatie van handler
- Pad en URL-resolutie
- Toestemming en sessiehelpers
- Cachebeheer
Een modulehelper krijgen
Section titled “Een modulehelper krijgen”Basisgebruik
Section titled “Basisgebruik”use Xmf\Module\Helper;
// Get helper for a specific module$helper = Helper::getHelper('mymodule');
// The helper is automatically associated with the module directoryVan huidige module
Section titled “Van huidige module”Als u geen modulenaam opgeeft, wordt de huidige actieve module gebruikt:
$helper = Helper::getHelper('');// or$helper = Helper::getHelper(basename(__DIR__));Configuratietoegang
Section titled “Configuratietoegang”Traditionele XOOPS-manier
Section titled “Traditionele XOOPS-manier”De moduleconfiguratie op de oude manier verkrijgen is uitgebreid:
$module_handler = xoops_gethandler('module');$module = $module_handler->getByDirname('mymodule');$config_handler = xoops_gethandler('config');$moduleConfig = $config_handler->getConfigsByCat(0, $module->getVar('mid'));$value = isset($moduleConfig['foo']) ? $moduleConfig['foo'] : 'default';echo "The value of 'foo' is: " . $value;XMF-manier
Section titled “XMF-manier”Met de modulehelper wordt dezelfde taak eenvoudig:
$helper = \Xmf\Module\Helper::getHelper('mymodule');echo "The value of 'foo' is: " . $helper->getConfig('foo', 'default');Helpermethoden
Section titled “Helpermethoden”getModule()
Section titled “getModule()”Retourneert het XoopsModule-object voor de module van de helper.
$module = $helper->getModule();$version = $module->getVar('version');$name = $module->getVar('name');$mid = $module->getVar('mid');getConfig($name, $default)
Section titled “getConfig($name, $default)”Retourneert een moduleconfiguratiewaarde of alle configuraties.
// Get single config with default$itemsPerPage = $helper->getConfig('items_per_page', 10);$enableCache = $helper->getConfig('enable_cache', true);
// Get all configs as array$allConfigs = $helper->getConfig('');getHandler($name)
Section titled “getHandler($name)”Retourneert een objecthandler voor de module.
$itemHandler = $helper->getHandler('items');$categoryHandler = $helper->getHandler('categories');
// Use the handler$item = $itemHandler->get($id);$items = $itemHandler->getObjects($criteria);laadTaal($name)
Section titled “laadTaal($name)”Laadt een taalbestand voor de module.
$helper->loadLanguage('main');$helper->loadLanguage('admin');$helper->loadLanguage('modinfo');isCurrentModule()
Section titled “isCurrentModule()”Controleert of deze module de momenteel actieve module is.
if ($helper->isCurrentModule()) { // We're in the module's own pages} else { // Called from another module or location}isGebruikerAdmin()
Section titled “isGebruikerAdmin()”Controleert of de huidige gebruiker beheerdersrechten heeft voor deze module.
if ($helper->isUserAdmin()) { // Show admin options echo '<a href="' . $helper->url('admin/index.php') . '">Admin</a>';}Pad en URL-methoden
Section titled “Pad en URL-methoden”url($url)
Section titled “url($url)”Retourneert een absolute URL voor een module-relatief pad.
$logoUrl = $helper->url('images/logo.png');// Returns: https://example.com/modules/mymodule/images/logo.png
$adminUrl = $helper->url('admin/index.php');// Returns: https://example.com/modules/mymodule/admin/index.phppad($path)
Section titled “pad($path)”Retourneert een absoluut bestandssysteempad voor een module-relatief pad.
$templatePath = $helper->path('templates/view.tpl');$includePath = $helper->path('include/functions.php');require_once $includePath;uploadUrl($url)
Section titled “uploadUrl($url)”Retourneert een absolute URL voor module-uploadbestanden.
$fileUrl = $helper->uploadUrl('documents/manual.pdf');uploadpad($path)
Section titled “uploadpad($path)”Retourneert een absoluut bestandssysteempad voor module-uploadbestanden.
$uploadDir = $helper->uploadPath('');$filePath = $helper->uploadPath('images/photo.jpg');omleiding($url, $time, $message)
Section titled “omleiding($url, $time, $message)”Leidt binnen de module om naar een module-relatieve URL.
$helper->redirect('index.php', 3, 'Item saved successfully');$helper->redirect('view.php?id=' . $newId, 2, 'Created!');Ondersteuning voor foutopsporing
Section titled “Ondersteuning voor foutopsporing”setDebug($bool)
Section titled “setDebug($bool)”Schakel de foutopsporingsmodus voor de helper in of uit.
$helper->setDebug(true); // Enable$helper->setDebug(false); // Disable$helper->setDebug(); // Enable (default is true)addLog($log)
Section titled “addLog($log)”Voeg een bericht toe aan het modulelogboek.
$helper->addLog('Processing item ID: ' . $id);$helper->addLog('Cache miss, loading from database');Gerelateerde helperklassen
Section titled “Gerelateerde helperklassen”XMF biedt gespecialiseerde helpers die Xmf\Module\Helper\AbstractHelper uitbreiden:
Toestemmingshelper
Section titled “Toestemmingshelper”Zie ../Recepten/Permission-Helper voor gedetailleerde documentatie.
$permHelper = new \Xmf\Module\Helper\Permission('mymodule');
// Check permissionif ($permHelper->checkPermission('view', $itemId)) { // User has permission}
// Check and redirect if no permission$permHelper->checkPermissionRedirect('edit', $itemId, 'index.php', 3, 'Access denied');Sessiehelper
Section titled “Sessiehelper”Modulebewuste sessieopslag met automatische sleutelvoorvoeging.
$session = new \Xmf\Module\Helper\Session('mymodule');
// Store value$session->set('last_viewed', $itemId);
// Retrieve value$lastViewed = $session->get('last_viewed', 0);
// Delete value$session->del('last_viewed');
// Clear all module session data$session->destroy();Cachehulp
Section titled “Cachehulp”Modulebewuste caching met automatische sleutelvoorvoeging.
$cache = new \Xmf\Module\Helper\Cache('mymodule');
// Write to cache (TTL in seconds)$cache->write('item_' . $id, $itemData, 3600);
// Read from cache$data = $cache->read('item_' . $id, null);
// Delete from cache$cache->delete('item_' . $id);
// Read with automatic regeneration$data = $cache->cacheRead( 'expensive_data', function() { // This runs only if cache miss return computeExpensiveData(); }, 3600);Compleet voorbeeld
Section titled “Compleet voorbeeld”Hier is een uitgebreid voorbeeld met behulp van de modulehelper:
<?phpuse Xmf\Request;use Xmf\Module\Helper;use Xmf\Module\Helper\Permission;use Xmf\Module\Helper\Session;
require_once dirname(dirname(__DIR__)) . '/mainfile.php';
// Initialize helpers$helper = Helper::getHelper('mymodule');$permHelper = new Permission('mymodule');$session = new Session('mymodule');
// Load language$helper->loadLanguage('main');
// Get configuration$itemsPerPage = $helper->getConfig('items_per_page', 10);$enableComments = $helper->getConfig('enable_comments', true);
// Handle request$op = Request::getCmd('op', 'list');$id = Request::getInt('id', 0);
require_once XOOPS_ROOT_PATH . '/header.php';
switch ($op) { case 'view': // Check permission if (!$permHelper->checkPermission('view', $id)) { redirect_header($helper->url('index.php'), 3, _NOPERM); }
// Track in session $session->set('last_viewed', $id);
// Get handler and item $itemHandler = $helper->getHandler('items'); $item = $itemHandler->get($id);
if (!$item) { redirect_header($helper->url('index.php'), 3, 'Item not found'); }
// Display item $xoopsTpl->assign('item', $item->toArray()); break;
case 'list': default: $itemHandler = $helper->getHandler('items');
$criteria = new CriteriaCompo(); $criteria->setLimit($itemsPerPage); $criteria->setSort('created'); $criteria->setOrder('DESC');
$items = $itemHandler->getObjects($criteria); $xoopsTpl->assign('items', $items);
// Show last viewed if exists $lastViewed = $session->get('last_viewed', 0); if ($lastViewed > 0) { $xoopsTpl->assign('last_viewed', $lastViewed); } break;}
// Admin link if authorizedif ($helper->isUserAdmin()) { $xoopsTpl->assign('admin_url', $helper->url('admin/index.php'));}
require_once XOOPS_ROOT_PATH . '/footer.php';AbstractHelper-basisklasse
Section titled “AbstractHelper-basisklasse”Alle XMF-helperklassen breiden Xmf\Module\Helper\AbstractHelper uit, wat het volgende biedt:
Constructeur
Section titled “Constructeur”public function __construct($dirname)Instantiseert met een modulemapnaam. Indien leeg: gebruikt de huidige module.
mapnaam()
Section titled “mapnaam()”Retourneert de naam van de modulemap die aan de helper is gekoppeld.
$dirname = $helper->dirname();begin()
Section titled “begin()”Aangeroepen door de constructor nadat de module is geladen. Overschrijven in aangepaste helpers voor initialisatielogica.
Aangepaste helpers maken
Section titled “Aangepaste helpers maken”U kunt de helper voor modulespecifieke functionaliteit uitbreiden:
<?phpnamespace XoopsModules\Mymodule;
class Helper extends \Xmf\Module\Helper\GenericHelper{ public function init() { // Custom initialization }
public function getItemUrl($id) { return $this->url('item.php?id=' . $id); }
public function getUploadDirectory() { $path = $this->uploadPath(''); if (!is_dir($path)) { mkdir($path, 0755, true); } return $path; }}Zie ook
Section titled “Zie ook”- Aan de slag met XMF - Basisgebruik van XMF
- XMF-Request - Verzoekafhandeling
- ../Recepten/Permission-Helper - Toestemmingsbeheer
- ../Recepten/Module-Admin-Pages - Beheerinterface maken
#xmf #module-helper #configuratie #handlers #sessie #cache