ti-enxame.com

Component-Creator: Ajuda ao desenvolvimento de componentes

Eu criei um componente usando http://component-creator.com/

Eu tenho duas tabelas #__competition_data & #__competition_entries.

Eu também tenho uma visão vazia

A tabela #__competition_data é onde as competições são adicionadas (no back-end) e a #__competition_entries é onde as entradas são armazenadas, a partir de um formulário de front-end.

Na minha visão vazia, quero poder exibir os _dados (mostrando o título da competição etc.) e ter o formulário (das _entries) exibido abaixo.

Eu tenho uma conta premium com o Component-Creator, mas eles estão dizendo que não podem mais me ajudar com minha solicitação de suporte (o que eu acho que é uma quebra de contrato - mas isso é outra história).

Eu sei que preciso editar:

models/frontendv1ewform.php
view/frontendv1ewform/view.html.php
view/frontendv1ewform/tmpl/default.php

Mas não consigo entender onde estou errado. Eu li os documentos no Joomla.org, mas ainda não consigo resolver isso! Alguma idéia de onde estou errado?

3
RustyJoomla

Se eu entendi direito, você deseja ter uma lista de dados de uma tabela junto com um formulário para a outra tabela na mesma exibição. Esse tipo de visualização não é a tarefa mais fácil porque faz uso de vários modelos. É muito provável que esteja fora do escopo para o qual o criador de componentes foi criado e, portanto, eles não oferecem mais suporte. Isso é compreensível.

Se esse for seu primeiro componente, aconselho a procurar uma abordagem diferente. Como carregar o formulário clicando em um botão (talvez em um modal). Então é fácil, porque o formulário será uma visualização regular e você terá uma lista de dados de visualização regular.

Se você estiver mais familiarizado com o Joomla MVC, poderá atribuir dois modelos ao seu controlador e carregar os dados necessários daqueles na sua visualização.

No meu componente, eu fiz isso no meu controlador principal (controller.php) no método de exibição com base na exibição ativa. Algo assim:

// 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