Um componente base para integrar Sencha Ext JS em uma aplicação PHP
Esta biblioteca fornece uma abstração simples em torno dos diferentes requisitos ao executar aplicativos Sencha Ext JS 6 (embora 5 deva funcionar também) a partir de um contexto de desenvolvimento e produção usando páginas geradas pelo servidor. As compilações de desenvolvimento e produção usam diferentes árvores de origem para servir os arquivos do aplicativo. Este processo é baseado no chamado manifesto e em um microcarregador Javascript. Para garantir que esse processo funcione perfeitamente com páginas e roteamento gerados pelo servidor, a biblioteca se conecta à geração do manifesto e modifica dinamicamente o manifesto com base no ambiente e contexto necessários.
Atualmente esta biblioteca é usada apenas como base de teqneers/ext-application-bundle, um pacote Symfony que integra Ext JS em um aplicativo baseado em Symfony. Não tentamos usar a biblioteca como um componente independente ou em qualquer outro contexto que não seja um ambiente Symfony, então o que se segue é apenas como ela deveria funcionar teoricamente sem o pacote. Agradecemos qualquer ajuda e contribuição para tornar a biblioteca mais útil fora do pacote.
Você pode instalar esta biblioteca usando o compositor
composer require teqneers/ext-application
ou adicione o pacote diretamente ao seu arquivo compositor.json.
Dada a seguinte estrutura de diretórios de um aplicativo fictício
./
|-- src/ Application source code
|-- htdocs/ Public web-facing directory (document root)
| |-- index.php PHP front controller
| |-- app/ Root folder for Ext JS application production build
|-- my-app/ The Ext JS application source folder (sencha generate app -ext MyApp ./my-app)
você deve configurar seu aplicativo (por exemplo, de index.php)
$ config = TQ ExtJS Application Configuration ApplicationConfiguration (
__DIR__ . ' /../my-app ' , // the absolute path to the Ext JS application workspace
' ../my-app ' , // the relative path from the public web-facing directory to the Ext JS application workspace
__DIR__ , // the absolute path to the public web-facing directory
' / ' // the relative path from the public web-facing directory to the root directory used for production build artifacts (usually /)
);
// add a default build
$ config -> addBuild (
' default ' , // the build name (just for referencing the build)
' / ' , // the application path relative to the Ext JS application workspace (usually / unless you have multiple applications and/or packages in a single workspace)
' app ' , // the application path relative to the root directory used for production build artifacts
' manifest.json ' , // the build manifest filename for development builds
' bootstrap.js ' , // the micro-loader filename for development builds
null , // the application cache manifest filename for development builds (usually NULL)
' bootstrap.json ' , // the build manifest filename for production builds
' bootstrap.js ' , // the micro-loader filename for production builds
' cache.appcache ' // the application cache manifest filename fro production builds
);
$ application = new TQ ExtJS Application Application (
$ config ,
new TQ ExtJS Application Manifest ManifestLoader (),
' dev ' // dev or prod depending on wether you want to run from development or drom production build
);
$ microLoader = $ application -> getMicroLoaderFile (); // returns a SplFileInfo for the configured micro-loader
$ hasAppCache = $ application -> hasAppCache ();
if ( $ hasAppCache ) {
$ appCache = $ application -> getAppCacheFile (); // returns a SplFileInfo for the configured application cache manifest
}
$ manifest = $ application -> getManifest ( ' /htdocs ' ); // returns a TQExtJSApplicationManifestManifest configured correctly when running document root on your application base path
echo $ manifest ; // outputs the manifest
Ao executar o aplicativo no modo de desenvolvimento, você deve certificar-se de que a raiz do documento do seu servidor web esteja um nível acima do diretório público (normal) voltado para a web, para que o servidor web também possa servir arquivos do espaço de trabalho do aplicativo Ext JS.
A Licença MIT (MIT)
Copyright (c) 2021 TEQneers GmbH & Co.
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.