Componentes reutilizáveis para seus templados de arestão de processos!
Bem -vindo ao Twack! A Twack ajuda a criar projetos de areia de processos bem estruturados e sustentáveis. Inspirado por angular.
| ProcessWire-Module: | https://modules.processwire.com/modules/twack/ |
| Forum de suporte: | https://processwire.com/talk/topic/23549-twack/ |
| Repositório: | https://github.com/sebiworld/twack |
| Wiki: | https://github.com/sebiworld/twack/wiki/ |
O Twack pode ser instalado como todos os outros módulos do ProcessWire. Verifique o seguinte guia para obter informações detalhadas: como instalar ou desinstalar módulos
Os pré -requisitos são php> = 5.5.0 e uma versão do processo de processamento> = 3.0.0 . No entanto, isso também é verificado durante a instalação do módulo. Sem mais dependências.
Twack usa componentes para subdividir o site em componentes lógicos. Um componente típico pode suportar seu próprio e não tem dependências, o que o torna reutilizável e fácil de manter. A maioria dos componentes consiste em um controlador e uma visão.
Se você não fez, crie o diretório site/templates/components . Aqui vamos colocar todos os nossos futuros componentes. Adicione um novo arquivo hello_world.view.php dentro do diretório. Crie site/templates/services onde todas as nossas classes de serviço encontrarão uma casa.
Abra o arquivo e preencha o seguinte conteúdo:
<?php
namespace ProcessWire ;
?>
<h2>Hello World!</h2>Está feito! Temos nosso primeiro componente em funcionamento. É certo que o componente consiste em apenas uma visão, mas mesmo para componentes simples, existem muitos propósitos úteis. Adicionaremos manuseio de dados e funções em um momento. Mas primeiro, vamos aprender a usar nosso componente em um de nossos têmeleos de arestão.
Se tivéssemos uma classe controladora para a nossa visão, a classe seria chamada HelloWorld . Mais sobre isso no próximo capítulo. Para usar nosso componente em um modelo de processo de processamento, precisamos pedir ao módulo Kack e ele o encontrará e inicializará para nós.
<?php
namespace ProcessWire ;
// Get a new instance of our HelloWorld-component:
$ myComponent = wire ( ' twack ' )-> getNewComponent ( ' HelloWorld ' );
?>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<?php
// Render the component`s view:
echo $ myComponent -> render ();
?>
</body>
</html>Como você vê, incluir um componente twack nas plantas tradicionais de incêndio de processos é bastante simples. Você pode construir o HTML completo em vistas do Twack e usar todo o seu potencial, mas não precisa. É possível substituir gradualmente partes individuais da página.
Vamos voltar ao nosso componente. Você criou seu componente Helloworld com nada além de uma visão que gera um ousado "Hello World!". A maioria dos componentes precisa de mais do que apenas uma saída. Precisamos de um controlador para tornar a visualização mais dinâmica.
Crie um novo site/templates/components/hello_world/ e mova nosso arquivo de visualização para este destino. Além disso, crie um arquivo de controlador com o nome hello_world.class.php neste novo diretório.
Um controlador Twack precisa de um pouco de código de caldeira para funcionar corretamente. Copie o seguinte código para o seu arquivo controlador ( hello_world.class.php ):
<?php
namespace ProcessWire ;
class HelloWorld extends TwackComponent {
public function __construct ( $ args ) {
parent :: __construct ( $ args );
}
} Todo controlador Twack deve estender nosso General TwackComponent, que traz muita funcionalidade de fundo ao nosso controlador. Com parent::__construct($args); Permitimos que o pai TwackComponent termine seu trabalho geral de inicialização antes que o código do componente personalizado seja executado.
Em nosso construtor, definimos variáveis, adicionamos componentes filhos e faremos todo o trabalho lógico para a visualização.
Um controlador um pouco mais avançado pode ser assim:
<?php
namespace ProcessWire ;
class HelloWorld extends TwackComponent {
public function __construct ( $ args ) {
parent :: __construct ( $ args );
$ this -> title = ' Hello World! ' ;
if ( isset ( $ args [ ' title ' ])) {
$ this -> title = $ args [ ' title ' ];
}
// Add and initialise a child-component
$ testChildArgs = [
' myTestValue '
];
$ this -> addComponent ( ' TestChild ' , $ testChildArgs );
}
} $this->title será "Hello World!", Desde que não tenhamos valor por $args['title'] do parâmetro $args do nosso construtor. Se tivéssemos inicializado o componente com $twack->getNewComponent('HelloWorld', ['title' => 'My new Title.']); , nós o definiríamos para esse novo valor.
Todo atributo do controlador também é acessível na visualização, você não precisa se preocupar em transferir valores.
Um componente filho pode ser adicionado via $this->addComponent() . Em nosso exemplo, adicionamos o componente 'TestChild', que deve estar localizado no site/templates/components/hello_world/test_child/test_child.class.php . O Twack procura automaticamente no diretório do componente atual para subdiretos. Especificar um outro caminho também é possível. Criei uma matriz $testChildArgs para demonstrar que a aprovação de parâmetros adicionais para o TestChild , que será passada para o seu construtor.
Nossa nova visão poderia ficar assim:
<?php
namespace ProcessWire ;
?>
<div class="hello_world_component">
<?php
if (! empty ( $ this -> showTitle )){
echo " <h2> { $ this -> showTitle } </h2> " ;
}
?>
<p>Lorem ipsum</p>
<div class="children_wrapper">
<?php
foreach ( $ this -> childComponents as $ childComponent ) {
echo ( string ) $ childComponent ;
}
?>
</div>
</div> Como você vê, mostramos apenas o título, se $this->title tiver um valor. Sob $this->childComponents temos uma lista de todos os componentes que foram adicionados via $this->addComponent() no controlador.
Agora criamos um componente básico e agora os conceitos gerais como o Twack funciona. Mas o Twack tem muitos recursos mais ótimos que emendam e simplificarão seu processo de desenvolvimento.
lang opcional, adicione muitos códigos de langugage que podem ser usados como um atalholang Opcional Param para selecionar um idioma em ambientes multilangwire('twack') . (Obrigado a @bernhardbaumrock) Usamos o Semver para versões. Para as versões disponíveis, consulte as tags neste repositório.
Este projeto está licenciado sob a licença pública de Mozilla versão 2.0 - consulte o arquivo License.md para obter detalhes.
➡️ Continue com 2: convenções de nomeação e variantes de componentes