RL
Form com post estático
Tenho esses 2 arquivos
Acontece que, quando clico no botão, a página some, mesmo estando com static=1. Como faço para manter o formulário sendo exibido mesmo depois de enviar o formulário?
<!--[main]-->
<div class="container">
<div class="row">
<div class="col-lg-3 col-md-2"></div>
<div class="col-lg-6 col-md-8 login-box">
<div class="col-lg-12 login-key">
<i class="fas fa-key" aria-hidden="true"></i>
</div>
<div class="col-lg-12 login-title">
{{ADMIN PANEL}}
</div>
<div class="col-lg-12 login-form">
<div class="col-lg-12 login-form">
<form method="POST" action="index.php?class=LoginAdm&method=onLogin&static=1">
<div class="form-group">
<label class="form-control-label">{{USERNAME}}</label>
<input type="text" class="form-control" name="username" required>
</div>
<div class="form-group">
<label class="form-control-label">{{PASSWORD}}</label>
<input type="password" class="form-control" name="password" required>
</div>
<div class="col-lg-12 loginbttm">
<div class="col-lg-6 login-btm login-text">
<!-- Error Message -->
</div>
<div class="col-lg-12 login-btm login-button">
<button type="submit" class="btn btn-outline-primary">{{LOGIN}}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<!--[/main]-->
- <?php
- class LoginAdm extends TPage
- {
- private $html;
- public function __construct()
- {
- parent::__construct();
- $this->html = new THtmlRenderer('app/resources/login/login_adm.html');
- $this->html->enableSection('main', [
- 'ADMIN PANEL' => _t('ADMIN PANEL'),
- 'USERNAME' => _t('USERNAME'),
- 'PASSWORD' => _t('PASSWORD'),
- 'LOGIN' => _t('LOGIN')
- ]);
- parent::add($this->html);
- }
- public static function onLogin($param)
- {
- try {
- if (!empty($param['username']) && !empty($param['password'])) {
- TTransaction::open(CONF_DATABASE_FILENAME);
- TSession::regenerate();
- if (User::authenticate($param['username'], $param['password'])) {
- AdiantiCoreApplication::loadPage('StoreForm');
- } else {
- throw new Exception("Usuário ou senha inválidos");
- }
- }
- } catch (Exception $e) {
- echo json_encode(['error' => $e->getMessage()]);
- }
- }
- }
- ?>
Acontece que, quando clico no botão, a página some, mesmo estando com static=1. Como faço para manter o formulário sendo exibido mesmo depois de enviar o formulário?
Você está usando o método "padrão" de php/html para submeter o formulário, sem ajax. Por isso há a recarga da tela.
Sugiro verificar o código html gerado pelo formulário de login nativo do Adianti. No botão de login há várias chamadas a funções javascript internas que podem te ajudar.