Como criar Views no Plone

http://brunobarbosa.com.br/2016/04/como-criar-views-no-plone/ Em: 07-06-2019

A View é o lugar onde você pode implementar a lógica de negócio de sua aplicação, ela irá processar e renderizar o resultado em um template. Importante notar que nosso template não precisa ser necessariamente uma página HTML, o retorno pode ser no formato que você quiser como XML ou Json por exemplo.

Uma View é composta geralmente de uma classe Python e um template (ZPT) associado a ela. A ideia é que façamos a separação entre a lógica do negócio e a camada de apresentação, mantendo o template o mais simples possível.

Como criar uma View?

Uma view pode ser criada através de uma classe Python simples que implementa na inicialização um objeto de context e request, mas a maneira mais comum de fazer issso é herdando da classe BrowserView presente no pacote Products.Five que já vem junto com o Plone.

Antes de começar, certifique-se de que você tem um produto Plone para fazer as modificações, se você ainda não criou o seu veja como criar um produto Plone utilizando o mr.bob e instalá-lo via buildout.

Vamos ao que interessa!

Acesse o diretório “browser” do seu produto e crie um arquivo chamado views.py (o nome do arquivo pode ser qualquer um de sua escolha).

Criar uma BrowserView é muito simples! Abra o arquivo views.py com seu editor de textos favorito e vamos criar nossa classe:

Vamos criar o template associado a nossa view. Ainda no diretório “browser”, crie o template:

Adicione um texto qualquer em nosso template para fins de teste:

Agora que já temos a classe e o template nós precisamos informar ao Plone que nossa view existe e darmos um nome a ela. Essa configuração é feita em arquivos ZCML (Zope Configuration Markup Language), um arquivo de configuração baseado em XML utilizado pelo Plone para registrar os mais diversos compontentes.

Dentro do diretório “browser” nós temos o arquivo “configure.zcml“. Vamos editá-lo!

Adicione as seguintes linhas ao final do arquivo, antes do fechamento da tag </configure>:

Vamos explicar cada um desses elementos.

for: Especifica quais tipos de conteúdo podem receber essa View. O uso do “*” significa que podemos chamá-la em qualquer lugar do portal, mas você poderia especificar a interface de um tipo de conteúdo qualquer a sua escolha.

name: Esse é o nome que chamaremos nossa view. Para evitarmos conflito com algum conteúdo existente no portal é recomendável o uso de “@@” antes do nome da view ao chamá-la na URL. Ex.: http://localhost:8080/Plone/@@my_first_view

permission: A permissão de acesso à view que criamos. A permissão “zope2.View” indica que ela é pública, ou seja, qualquer usuário pode acessar, mas também há outras opções que podem ser usadas tais como: cmf.ModifyPortalContent ou cmf.ManagePortal. Você pode encontrar mais informações sobre as permissões padrões do zope na documentação oficial.

class: A classe que criamos para representar nossa View. Onde podemos implementar a lógica de negócio.

template: O template associado a nossa view.

Para fazer o Plone reconhecer nossa nova View precisamos reiniciar as instâncias de nossa instalação, após poderemos acessá-la de qualquer lugar do portal bastando acrescentar ao final da URL: “/@@my_first_view

O resultado ao chamar nossa view no navegador deverá ser a apresentação do texto: “It’s works

Em resumo, para criar nossa própria BrowserView no Plone nós precisamos:

  1. Uma classe que herda de “BrowserView’;
  2. Um template;
  3. Registrar nossa View no arquivo de configuração “configure.zcml”

Legal! Já temos nossa View ativa e funcionando, agora vamos adicionar um comportamento qualquer para entendermos um pouco do que podemos fazer com Views 

Em nosso arquivo views.py na classe MyFirstView vamos adicionar um método chamado ‘date’ para exibir a data atual no template.

E no template associado vamos utilizar a TAL (Template Attribute Language) para exibir o resultado:

O atributo tal:content substitui o conteúdo existente dentro do elemento html (nesse caso o <p>) pelo conteúdo informado. No exemplo nós estamos chamando o método ‘date’ de nossa view.

Espero que esse artigo seja útil para quem está começando com Plone e precisa deixar seus portais mais ricos e dinâmicos =)