Перенаправление формы альторутера - PullRequest
1 голос
/ 21 октября 2019

Я использую роутер Alto для проекта. Моя проблема возникает, когда я отправляю форму, я не могу найти решение для работы перенаправления. Структура моего проекта:

root
|/elements
|- layout.php
|/public
|- index.php
|/templates
|- add.php
|- home.php
|- login.php

Я пробовал разные ссылки в атрибутах действия. Я также попытался оставить это пустым и использовать заголовок («Местоположение») для перенаправления.

Вот как я управляю маршрутизатором:

$router = new AltoRouter();
$router->map('GET', '/', 'home', 'home');
$router->map('GET', '/login', 'login', 'login');
$router->map('GET', '/add', 'add', 'add');
$match = $router->match();

if (is_array($match)) {
    if (is_callable($match['target'])) {
        call_user_func_array($match['target'], $match['params']);
    } else {
        $params = $match['params'];
        ob_start();
        require "../templates/{$match['target']}.php";
        $pageContent = ob_get_clean();
    }
    require '../elements/layout.php';

} else {
    echo '404';
}

Теперь на странице добавления у меня есть форма, которую следует добавить в мою базу данных и затем перенаправить на домашнюю страницу. Вот где я застрял (также, часть базы данных для вставки может содержать ошибки, но я буду работать над этим позже):

<?php

use App\App;

if (!empty($_POST)) {
    $he = App::getPDO()->prepare("INSERT INTO huiles(name_simple, name_science, elements, dilution, props) VALUES (?, ?, ?, ?, ?)");
    $params = [
        $_POST['name_simple'],
        $_POST['name_science'],
        $_POST['elements'],
        $_POST['dilution'],
        $_POST['props']
    ];
    $he->execute($params);
}

?>

<form action="<?= $router->generate("home") ?>" method="post">
<div class="form-group">
    <label for="name_simple">Nom</label>
    <input type="text" name="name_simple" class="form-control">
</div>
<div class="form-group">
    <label for="name_simple">Nom scientifique</label>
    <input type="text" name="name_science" class="form-control">
</div>
<div class="form-group">
    <label for="name_simple">Elements</label>
    <input type="text" name="elements" class="form-control">
</div>
<div class="form-group">
    <label for="name_simple">Dilution</label>
    <input type="text" name="dilution" class="form-control">
</div>
<div class="form-group">
    <label for="name_simple">Propriétés</label>
    <input type="text" name="props" class="form-control">
</div>
<button class="btn btn-primary">Ajouter</button>
</form>

Как мне обработать маршрутизатор для перенаправления на домашнюю страницу послеотправить (а также после того, как данные добавлены в БД)?

...