Простая форма с bootstrap без отправки данных через _POST - - PullRequest
0 голосов
/ 21 июня 2020

Прежде всего, это мой первый вопрос по stackoverflow. Это отличное место, чтобы получить ответы на чужие проблемы. Но на этот раз я не смог найти ответ на свой, поэтому мой вопрос ниже ...

У меня точно такая же проблема, как описано в этом вопросе: Простая форма не отправляет данные через _POST

Это точно такая же проблема: даже var_dump($_POST); показывает мне это: array(0) { } и попытка доступа к переданным данным дает мне Notice: Undefined index

Я чесал голову за последние 2 дня.

Мой код:

<form action="" method="POST" id="test">

    <label for="email">Email</label><br>
    <input type="text" name="email" id="email" value=""><br>
    <input class="btn btn-primary btn-lg btn-block mb-5" type="submit" name="save-company-button" id="save-company-button" value="SAVE">

</form>

Это самая простая форма, и она все еще не работает. Я не понимаю почему.

Заранее спасибо за вашу помощь.

EDIT:

Содержимое представления:

<?php 

$siteroot = SITEROOT;

// Metadata
$meta_data_title = "About us";

// Page title
$main_title = "About us";

// Additional CSS to the main CSS (bootstrap.css and custom-style.css)
$other_css = "";

// Javascript
ob_start();
require "viewAboutUs/viewAboutUs-javascript.php";
$javascript = ob_get_clean();

// Breadcrumb
$breadcrumb = "<li class=\"breadcrumb-item\"><a href=\"$siteroot\">Home</a></li>
               <li class=\"breadcrumb-item active\" aria-current=\"page\">About us</li>";

// Main content
ob_start();
require "viewAboutUs/viewAboutUs-content.php";
$main_content = ob_get_clean();

// Javascript at the bottom
$javascript_bottom = "";

// Template file
require "template.php"

?>

Содержимое viewAboutUs-content. php:

<form action="" method="POST" id="test">

    <label for="email">Email</label><br>
    <input type="text" name="email" id="email" value=""><br><br>
    <input class="btn btn-primary btn-lg btn-block mb-5" type="submit" name="save-company-button" id="save-company-button" value="SAVE">

</form>

Файл viewAboutUs-javascript.php пуст.

Содержимое контроллера displayAboutUs. php:

<?php

function displayAboutUs() {
    
        var_dump($_POST);

        echo "Test: " . $_POST["email"] . "<br>";

    if (isset($_POST["save-company-button"])) {

      echo "Button clicked ! <br>";

    }

    require VIEWS_FOLDER . "/pages/viewAboutUs.php";
} 

?>

Извините за время для предоставления кода, я обнаружил интерфейс stackoverflow ...

EDIT # 1

Если я скопирую и вставлю элементы в простой файл php, который я помещаю в свою папку / public /, он будет работать без проблем.

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

    <?php

        var_dump($_POST);

        echo "Test: " . $_POST["email"] . "<br>";


        if (isset($_POST["save-company-button"])) {

            echo "Button clicked ! <br>";

        }
            

    ?>

    <form action="" method="POST" id="test">

        <label for="email">Email</label><br>
        <input type="text" name="email" id="email" value=""><br><br>
        <input type="submit" class="btn btn-primary btn-lg btn-block mb-5"  name="save-company-button" id="save-company-button" value="SAVE">

    </form>

</body>
</html>

Единственное, что изменится в этом случае, это то, что на этот раз я использую bootstrap. В противном случае все мои формы работали бы идеально так, как до сих пор был организован мой код.

EDIT # 2

После многократного просмотра моего кода единственный вывод, который я пришел к выводу, что проблема должна быть расположена в коде HTML самой формы. Что-то может отсутствовать в атрибутах тега формы и / или одного из тегов ввода, потому что текущие оставшиеся атрибуты являются минимальным.

Если кто-то является экспертом HTML5, это может быть полезно. ..

EDIT # 3

Кажется, все указывает на то, что то, что я пишу в моем EDIT # 2, правильно, потому что если я сделаю var_dump($_POST); в основном контроллер (индекс. php), непосредственно перед вызовом displayAboutUs() результаты те же: данные не переданы.

Итак, эта форма пока ничего не отправляет, как при нажатии на кнопке отправки, но это произойдет, если я скопирую и вставлю его в другой отдельный тестовый файл.

Вопрос: почему?

1 Ответ

0 голосов
/ 21 июня 2020

После того, как я сжег свой мозг и чуть не выбросил компьютер в окно, я наконец получил его. Поэтому я поместил решение здесь, чтобы другие люди могли извлечь уроки из моей ошибки.

Проблема исходила из моего файла .htaccess, который отсутствовал (я скопировал-вставил структуру предыдущего проекта в качестве шаблона для моего нового), и, поскольку скрытые файлы не отображались, я, конечно, пропустил .htaccess при копировании файлов вручную ...

Вот недостающий контент, который вызывал столько проблем:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Итак, в качестве напоминания для себя и других, если что-то, даже очень простое, отчаянно идет не так, проверьте то, чего вы не видите; -)

Надеюсь, это поможет! И спасибо тем, кто пытался помочь.

Этот вопрос можно закрыть, но я не вижу, что делать дальше ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...