it-swarm-eu.dev

Component-Creator: Guida allo sviluppo di componenti

Ho creato un componente usando http://component-creator.com/

Ho due tabelle #__competition_data & #__competition_entries.

Ho anche una visione vuota

La tabella #__competition_data è la posizione in cui vengono aggiunte le competizioni (nel backend) e la #__competition_entries è la posizione in cui sono archiviate le voci, da un modulo front-end.

Nella mia visione vuota, voglio essere in grado di visualizzare i _data (che mostrano il titolo della competizione ecc.) E di avere il modulo (dai _entries) visualizzato sotto.

Ho un account premium con Component-Creator, ma stanno dicendo che non possono più aiutarmi con la mia richiesta di supporto (che penso sia una violazione del contratto - ma questa è un'altra storia).

So che devo modificare:

modelli/frontendv1ewform.php
View/frontendv1ewform/view.html.php
View/frontendv1ewform/tmpl/default.php

Ma non riesco a capire dove sbaglio. Ho letto i documenti su Joomla.org ma non riesco ancora a risolverli! Qualche idea su dove sbaglio?

3
RustyJoomla

Se ho capito bene, vuoi avere un elenco di dati da una tabella insieme a un modulo per l'altra tabella nella stessa vista. Questo tipo di visualizzazioni non è l'attività più semplice perché utilizza più modelli. Questo è molto probabilmente fuori dallo scopo per cui è stato creato il componente-creatore e quindi non ti danno più supporto. Questo è comprensibile.

Se questo è il tuo primo componente, ti consiglierei di cercare un approccio diverso. Come caricare il modulo facendo clic su un pulsante (magari in modalità modale). Quindi è facile perché il modulo sarà una vista modulo regolare e avrai un elenco di dati di visualizzazione regolare.

Se hai più familiarità con Joomla MVC, puoi assegnare due modelli all'interno del tuo controller e caricare i dati necessari da quelli nella tua vista.

Nel mio componente l'ho fatto nel mio controller principale (controller.php) nel metodo di visualizzazione basato sulla vista attiva. Qualcosa come questo:

// Add additional models
$viewName       = $this->input->get('view', 'default_view');
$format         = $this->input->get('format', 'html');

switch ($viewName)
{
    case 'foo':
        $viewLayout = $this->input->get('layout', 'default');
        $view = $this->getView($viewName, $format, '', array('base_path' => $this->basePath, 'layout' => $viewLayout));
        $view->setModel($this->getModel('foo'));
        $view->setModel($this->getModel('bar'));
        break;
    case '...':
        ...
        break;
}
3
Bakual