Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
A dúvida é a seguinte:
Estou desenvolvendo um projeto em PHP + MySQL + HTML + CSS + jQuery utilizando MVC, minha dúvida está relacionada a onde o jQuery se encaixa, hoje estou tratando assim:
jQuery:
jquery.system.api.js -> Efetua os eventos e ações envio.
jquery.system.funcs.js -> Armazena funções que podem ser chamadas mais de uma vez, exemplo: uma função que inclui mascaras nos campos.
jquery.system.visual.js -> Acima dos mesmo eventos da system.api, mas apenas nas mudanças visuais que os eventos devem causar.
Estrutura de pastas de uma parte:
index.php
callFunctions.php
/view/geral/geral_list_users.php -> A minha dúvida está aqui!!!!
/view/class.geralView.php
/controller/class.geralController.php
/model/class.geralModel.php
/js/arquivos.js
A dúvida é:
Eu chamo o controller através do callFunctions, na classe Controller eu digo o que o model deve fazer -> Buscar os usuário no BD, e passo a array com o resultado para a classe do View, DUVIDA:
Dentro do view eu apenas pego o valor da array, incluo o arquivo geral_list_users.php e faço a listagem dentro desse arquivo, ou seja, uso a classe do View apenas pra incluir o arquivo, está correto isso? seria errado remover essa classe e incluir direto a lista pelo Controller ?
E por fim, onde o jQuery fica no MVC ? minha divisão está correta?
>
14 minutos atrás, Gabriel Heming disse:
jQuery é uma biblioteca, escrita em JavaScript, que pode ser utilizada pelo MVC do Front-End (Controller e Model) e faz parte da View do Back-End.
Obrigado pela resposta, muito bom esse texto.
Mas estou com uma outra dúvida que na verdade acho que já foi respondida nesse texto, porém mesmo assim prefiro confirmar:
É errado usar o Controller pra incluir realizar alguma coisa -> EX: receber uma array e incluir um arquivo que use essa array ?
Porém esse arquivo incluído não é classe, apenas um pagina com while($line = mysqli_fetch_array($rs) { // coisas listadas}.
Ou pra ficar no modo correto, eu realmente tenho que usar um função da classe view relacionada pra fazer isso?
A reposta mais depende de qual é a finalidade de manipular esse array. Talvez o texto do link abaixo pode lhe esclarer:
>
7 minutos atrás, Gabriel Heming disse:
A reposta mais depende de qual é a finalidade de manipular esse array. Talvez o texto do link abaixo pode lhe esclarer:
Deu pra entender sim, o que eu estava me confundindo era que o view tem que necessariamente não tratar nada e receber tudo pronto.
Obrigado
É um erro bastante difundido, pois, alguns dos templates builder disponíveis, trabalham dessa forma. Ou seja, exigem que os dados venham tratados e sejam apenas scalares.
Movido: Ambientes de Desenvolvimento -> Arquitetura e Métodos Ágeis.
Apenas para deixar um ponto claro, algo que as pessoas confundem:
- MVC não é tecnologia propriamente dita é a maneira de como cria/organiza
- MVC não depende de frameworks e nem orientação a objetos
- MVC veio antes da Web (junte isto ao item 1)
Na documentação da Apple existe alguns "guias" de como usar MVC, ou seja é algo que é voltado para aplicações Desktop e Mobile (claro que existe muito mais coisas que o SDK deles permitem, como extensões do Safari):
- Conceptual/DevPedia-CocoaCore/MVC
- Conceptual/DevPedia-CocoaCore/ModelObject
- Conceptual/DevPedia-CocoaCore/ControllerObject
Sei que parece que fugi do assunto "aonde jQuery se encaixa nisto", mas na verdade estou querendo dizer que o MVC é apenas uma maneira de organizar e pode ser totalmente opcional, sendo muitas vezes (muitas mesmo) usada sem necessidade, ainda mais em páginas web simples, aonde o método de organização poderia ser algo mais simplório e objetivo.
Então para exemplificar o jQuery não fica em uma camada do MVC, ele simplesmente é uma lib como o Gabriel citou, o que você organiza será o "MVC".
Um projeto Web MVC é diferente dos projetos que existiam na época em que o MVC foi concebido.
Na prática, o MVC da Web deve ser divido em dois MVCs:
-
MVC do Back-End;
-
MVC do Front-End.
O MVC do back-end é puramente PHP e baseado em requisições. Nenhuma outra linguagem irá realizar nada no back-end, apenas PHP. Ou seja:
-
Controller: receberá a requisição HTTP e realizará as tarefas a ele pertinentes;
-
Model: será consultado pelo controller, caso necessário, e tratará todas as informações lógicas e de negócio. Poderá consultar um storage se necessário.
-
View: irá gerar todo e qualquer output gerado pelo PHP. Precisa realizar um echo/print? Irá exibir em browser (HTML) ou em linha de comando (texto puro)? É na View.
Uma vez que a View do back-end gerou o HTML, inicia a etapa do MVC do front-end. Esse, por outro lado, é baseado em evento e dividido em algumas linguagens (HTML + CSS + JavaScript). Sendo que a única linguagem de programação é o JavaScript.
Nessa caso, o cenário é um pouco mais complexo que no back-end. Para tanto, é melhor iniciar pela View:
-
View: é tudo que o usuário pode visualizar. É o composto entre HTML + CSS (que pode ser modificado por JavaScript). Diferentemente do PHP, que espera uma requisição, este espera um evento (seja clicar em botão, passar o mouse sobre algum elemento, apertar uma tecla, etc...). Quando um evento é disparado, ele pode possuir um dos quatro tratamentos abaixo (não limitado a somente um):
-
Ser capturado pelo HTML: Clicar em um link, submeter um formulário, digitar em text box. São todos os eventos "nativos" ou "padrões" do HTML.
-
Ser capturado pelo JavaScript: Quando é adicionado um event listener, o JavaScript interceptará o evento e poderá personalizar a ação que deverá ser tomada (veremos mais na parte de controllers).
-
Ser capturado pelo CSS: São os eventos que o CSS toma controle (:hove, :active, :visited, etc..). São bem limitados, e o controle fornecido é puramente visual;
-
Não acontecer nada: é, de longe, o evento mais disparado. Clickou em um área em branco, movimentou o mouse pelo site, rolou um scroll. Acredite, tudo isso é um evento que não possui um listener.
-
Controller: puramente JavaScript. São os listeners adicionados através do JavaScript. Assim como o PHP está esperando uma requisição, o JavaScript espera um evento. Uma vez caputrado, pode-se atribuir novas operações (gerar uma requisição, modificar o HTML/CSS, consultar regras de negócio) ou evitar que uma ação seja realizada (impedir o click em um link ou envio de um formulário).
-
Model: puramente JavaScript. Igual ao PHP, é aonde estarão as regras de negócio. Pode-se utilizar para executar validações de negócio, requisições assíncronas (AJAX), consultar algum storage local (localStorage, cookies, etc..). Da mesma forma que o PHP realizaria, com a diferença de ser no front-end.
>
Em 07/04/2017 at 10:34, AnthraxisBR disse:
E por fim, onde o jQuery fica no MVC?
jQuery é uma biblioteca, escrita em JavaScript, que pode ser utilizada pelo MVC do Front-End (Controller e Model) e faz parte da View do Back-End.