XMF Modulhjælper
Klassen Xmf\Module\Helper giver en nem måde at få adgang til modulrelateret information, konfigurationer, handlere og mere. Brug af modulhjælperen forenkler din kode og reducerer boilerplate.
Oversigt
Sektion kaldt “Oversigt”Modulhjælperen giver:
- Forenklet konfigurationsadgang
- Hentning af modulobjekter
- Handler-instansiering
- Sti og URL opløsning
- Tilladelse og session hjælpere
- Cachehåndtering
Få en modulhjælper
Sektion kaldt “Få en modulhjælper”Grundlæggende brug
Sektion kaldt “Grundlæggende brug”use Xmf\Module\Helper;
// Get helper for a specific module$helper = Helper::getHelper('mymodule');
// The helper is automatically associated with the module directoryFra nuværende modul
Sektion kaldt “Fra nuværende modul”Hvis du ikke angiver et modulnavn, bruger det det aktuelle aktive modul:
$helper = Helper::getHelper('');// or$helper = Helper::getHelper(basename(__DIR__));Konfigurationsadgang
Sektion kaldt “Konfigurationsadgang”Traditionel XOOPS måde
Sektion kaldt “Traditionel XOOPS måde”At få modulkonfigurationen på den gamle måde er udførligt:
$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 måde
Sektion kaldt “XMF måde”Med modulhjælperen bliver den samme opgave enkel:
$helper = \Xmf\Module\Helper::getHelper('mymodule');echo "The value of 'foo' is: " . $helper->getConfig('foo', 'default');Hjælpemetoder
Sektion kaldt “Hjælpemetoder”getModule()
Sektion kaldt “getModule()”Returnerer XoopsModule-objektet for hjælperens modul.
$module = $helper->getModule();$version = $module->getVar('version');$name = $module->getVar('name');$mid = $module->getVar('mid');getConfig($name, $default)
Sektion kaldt “getConfig($name, $default)”Returnerer en modulkonfigurationsværdi eller alle konfigurationer.
// 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)
Sektion kaldt “getHandler($name)”Returnerer en objektbehandler for modulet.
$itemHandler = $helper->getHandler('items');$categoryHandler = $helper->getHandler('categories');
// Use the handler$item = $itemHandler->get($id);$items = $itemHandler->getObjects($criteria);loadLanguage($name)
Sektion kaldt “loadLanguage($name)”Indlæser en sprogfil til modulet.
$helper->loadLanguage('main');$helper->loadLanguage('admin');$helper->loadLanguage('modinfo');isCurrentModule()
Sektion kaldt “isCurrentModule()”Kontrollerer, om dette modul er det aktuelt aktive modul.
if ($helper->isCurrentModule()) { // We're in the module's own pages} else { // Called from another module or location}isUserAdmin()
Sektion kaldt “isUserAdmin()”Kontrollerer, om den aktuelle bruger har administratorrettigheder til dette modul.
if ($helper->isUserAdmin()) { // Show admin options echo '<a href="' . $helper->url('admin/index.php') . '">Admin</a>';}Sti- og URL-metoder
Sektion kaldt “Sti- og URL-metoder”url($url)
Sektion kaldt “url($url)”Returnerer en absolut URL for en modulrelativ sti.
$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.phpsti($path)
Sektion kaldt “sti($path)”Returnerer en absolut filsystemsti for en modulrelativ sti.
$templatePath = $helper->path('templates/view.tpl');$includePath = $helper->path('include/functions.php');require_once $includePath;uploadUrl($url)
Sektion kaldt “uploadUrl($url)”Returnerer en absolut URL for moduluploadfiler.
$fileUrl = $helper->uploadUrl('documents/manual.pdf');uploadPath($path)
Sektion kaldt “uploadPath($path)”Returnerer en absolut filsystemsti for moduluploadfiler.
$uploadDir = $helper->uploadPath('');$filePath = $helper->uploadPath('images/photo.jpg');omdirigering($url, $time, $message)
Sektion kaldt “omdirigering($url, $time, $message)”Omdirigerer i modulet til en modul-relativ URL.
$helper->redirect('index.php', 3, 'Item saved successfully');$helper->redirect('view.php?id=' . $newId, 2, 'Created!');Fejlfindingssupport
Sektion kaldt “Fejlfindingssupport”setDebug($bool)
Sektion kaldt “setDebug($bool)”Aktiver eller deaktiver fejlretningstilstand for hjælperen.
$helper->setDebug(true); // Enable$helper->setDebug(false); // Disable$helper->setDebug(); // Enable (default is true)addLog($log)
Sektion kaldt “addLog($log)”Tilføj en besked til modulloggen.
$helper->addLog('Processing item ID: ' . $id);$helper->addLog('Cache miss, loading from database');Relaterede hjælperklasser
Sektion kaldt “Relaterede hjælperklasser”XMF leverer specialiserede hjælpere, der udvider Xmf\Module\Helper\AbstractHelper:
Tilladelseshjælper
Sektion kaldt “Tilladelseshjælper”Se ../Recipes/Permission-Helper for detaljeret dokumentation.
$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');Sessionshjælper
Sektion kaldt “Sessionshjælper”Modulbevidst sessionslagring med automatisk nøglepræfiks.
$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();Cachehjælper
Sektion kaldt “Cachehjælper”Modulbevidst caching med automatisk nøglepræfiks.
$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);Komplet eksempel
Sektion kaldt “Komplet eksempel”Her er et omfattende eksempel ved hjælp af modulhjælperen:
<?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
Sektion kaldt “AbstractHelper Basisklasse”Alle XMF hjælperklasser udvider Xmf\Module\Helper\AbstractHelper, som giver:
Konstruktør
Sektion kaldt “Konstruktør”public function __construct($dirname)Instantierer med et modulbiblioteksnavn. Hvis tom, bruger det aktuelle modul.
dirname()
Sektion kaldt “dirname()”Returnerer det modulbiblioteksnavn, der er knyttet til hjælperen.
$dirname = $helper->dirname();init()
Sektion kaldt “init()”Kaldes af konstruktøren efter at modulet er indlæst. Tilsidesæt i brugerdefinerede hjælpere til initialiseringslogik.
Oprettelse af brugerdefinerede hjælpere
Sektion kaldt “Oprettelse af brugerdefinerede hjælpere”Du kan udvide hjælperen til modulspecifik funktionalitet:
<?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; }}Se også
Sektion kaldt “Se også”- Kom godt i gang med-XMF - Grundlæggende brug af XMF
- XMF-Request - Anmodningshåndtering
- ../Recipes/Permission-Helper - Administration af tilladelser
- ../Recipes/Module-Admin-Pages - Oprettelse af administratorgrænseflade
#xmf #modulhjælper #konfiguration #handlere #session #cache