Todos os seus aplicativos serão derivados desta classe ou usarão classes que são irmãos desta classe de aplicativos.
Esta aula fornece:
Com o tempo, seu aplicativo aumentará e o número de rotas aumentará. Por isso, fornecemos uma maneira conveniente de armazenar todas as rotas em um arquivo de configuração independente. Portanto, não é necessário inicializar todas as rotas em um construtor de um aplicativo (ou qualquer classe derivada).
Vamos descobrir como você pode usá -lo.
Antes de tudo, crie arquivo de configuração ./conf/routes.php no diretório de projetos. Deve parecer assim:
$ callbackProvider = new SomeCallbackClass ();
return
[
[
' route ' => ' /news/ ' , // your route
' callback ' => ' displayNewsLine ' // this must be the method name of your
// Application derived class
] ,
[
' route ' => ' /news/[i:news_id]/ ' , // your route
' callback ' => ' displayExactNews ' , // this must be the method name of your
' method ' => ' POST ' // Application derived class
] ,
[
' route ' => ' /some-route/ ' ,
' method ' => ' GET ' ,
' callback ' => [ // here we specify callback as pair [object, method]
callbackProvider ,
' someMethod '
]
]
];Observe que o campo 'Método' não está definido, então ele será padrão para obter.
Você também pode especificar seu próprio arquivo de configuração.
Em seguida, ligue para o aplicativo :: loadRoutesFromConfig ()
$ app -> loadRoutesFromConfig ( ' ./conf/my-config.php ' );Esta classe fornece rotina de aplicativos simples com renderização e manuseio de erros mais complexos.
Nas rotas da classe de aplicativo, as rotas podem retornar apenas strings. Mas a classe CommonApplication permite que você retorne matrizes de string que serão colocadas nos espaços reservados modelo.
Exemplo simples:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => ' Route main '
];
}
}Aqui o manipulador da Route gera duas partes da página / página simples / - 'título' e 'main'. Essas duas partes serão inseridas nos espaços reservados {title} e {main}, respectivamente.
Exemplo mais complexo:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => new View ( ' Generated main content ' )
];
}
}Aqui passamos a instância da visualização da classe (ou qualquer classe derivada da visualização) para o compilador da página do aplicativo. Ele chamará o método de exibição :: renderização que deve retornar o conteúdo HTML compilado.
Você também pode manter as rotas AL em configurações. Você pode usar as configurações JSON:
[
{
"route" : "/route1/" ,
"callback" : "route1" ,
"method" : "GET"
} ,
{
"route" : "/route2/" ,
"callback" : "route2" ,
"method" : [ "GET" , "POST" ]
}
]Esses dados devem ser armazenados no diretor './conf/' do seu projeto. Ou carregar configurações explicitamente, como mostrado abaixo (usando o método loadRoutesFromConfig).
E também precisamos desses métodos na classe de aplicativo.
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
// loading config on custom path
$ this -> loadRoutesFromConfig ( ' ./my-routes.json ' );
}
function route1 ()
{
return [
// here result
];
}
function route2 ()
{
return [
// here result
];
}
}Observe que você pode carregar várias configurações com uma chamada do método loadRoutesFromConfigs
function __construct ( $ template )
{
parent :: __construct ( $ template );
$ this -> loadRoutesFromConfigs ([ ' ./conf/my/routes.json ' , ' ./conf/my-routes.php ' ]);
}Ou o mesmo:
function __construct ( $ template )
{
parent :: __construct ( $ template );
$ this -> loadRoutesFromDirectory ( ' ./conf ' );
} Você pode criar arquivo com a lista de mensagens que serão substituídas no modelo variável action-message
Este arquivo deve ser armazenado no Diretório %your-application-class-directory%/res/action-messages.json
Então, se a classe encontrar o parâmetro $_GET['action-message'] , será acionada a substituição action-message .
Você pode simplesmente produzir conteúdo do arquivo *.tpl como visualização comum. Pode ser útil se você precisar renderizar páginas estáticas ou peças de página estática. Isso permitirá que você evite criar métodos de classe separados e de visualização separados para esses fins.
É bastante simples:
// here $template is an instance of the MezonHtmlTemplateHtmlTemplate class
// and 'block-name' is a block name in this class
$ view = new Mezon Application ViewStatic ( $ template , ' block-name ' );Para mais detalhes sobre os modelos mezon, consulte
TBA