1

我正在为一个项目使用 Alto 路由器。当我提交表单时,我的问题出现了,我找不到使重定向工作的解决方案。我的项目结构:

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

我在动作属性中尝试了不同的 url。我还尝试将其留空并使用 header("Location") 进行重定向。

这是我处理路由器的方式:

$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';
}

现在在添加页面上,我有一个应该添加到我的数据库然后重定向到主页的表单。这是我卡住的地方(另外,用于插入的 db 部分可能包含错误,但我稍后会处理它):

<?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>

提交后(以及将数据添加到数据库后),我应该如何处理路由器重定向到主页?

4

0 回答 0