【问题标题】:Setting a transient from a select option in PHP从 PHP 中的选择选项设置瞬态
【发布时间】:2015-09-21 23:35:54
【问题描述】:

我正在尝试通过选择选项设置瞬态 (API reference)。如果我设置瞬态而不重定向到另一个页面,只需将其设置为重定向到自身,然后设置瞬态,当我手动输入我应该重定向到的页面的 URL 时,它就会显示出来。

但是,如果我直接重定向,它不会记录我已设置瞬态。我得出的结论是,我如何从选择元素中获取变量是问题所在,因为如果我只是将普通字符串作为瞬态,它的工作原理就像它应该的那样,例如(在第一页):

set_transient('transient_test', "this is a test", 60 * 30);

以下是我从选择元素中获取变量的方法(在第一页):

if (isset($_POST['industry']) == true) {
      $selectOption = $_POST['industry'];
      set_transient('industry_transient', $selectOption, 60 * 30);
}

我测试瞬态是否是我想要的变量(在第一页):

if (isset($_POST['industry']) == true) {
                                $selectOption = $_POST['industry'];
                                set_transient('industry_transient', $selectOption, 60 * 30);
                                $selected = get_transient('industry_transient');
                                echo $selected;
                        }

这是我获得瞬态的方法(第 2 页):

$transient = get_transient('industry_transient');

我这样测试它,当我立即重定向时总是得到“无瞬态”(第 2 页):

if (false === ($value = get_transient('industry_transient'))) {
      echo 'no transient';
}

if (true === ($value = get_transient('industry_transient'))) {
      echo 'yes transient';
}

这是我的表格(第一页):

<form method="post" action="http://localhost:8888/wordpress/candidates/industry">
                        <select name="industry">
                                <option disabled selected> -- Select an industry -- </option>
                                        <option value="Example">there are a lot of options...</option>
                        </select>
                        <input type="submit" value="Submit">
                </form>

我尝试在表单标签中设置瞬态,但是没有任何区别。

【问题讨论】:

  • 重定向时是否确认选择值在您的 POST 中?我肯定会确认,当您提出问题是否是问题时。另外,瞬态代码在设置瞬态代码的正下方,对吗?很难判断它是否在同一个文件中,以及放置代码的顺序..
  • 嘿,我编辑了我的问题
  • 表单重定向是指向第一页还是第二页?
  • 表单指向第二页,是第一页的子页。

标签: php html wordpress


【解决方案1】:

根据文件的位置,您似乎只需将设置瞬态的代码移动到第二页。

表单指向的位置将是$_POST 数据的位置。由于您将表单指向第 2 页,因此您应该在第 2 页上有此代码。

if (isset($_POST['industry']) == true) {
    $selectOption = $_POST['industry'];
    set_transient('industry_transient', $selectOption, 60 * 30);
}

它当然应该在其他代码之上。在这一点上,真的没有必要运行这个:

$transient = get_transient('industry_transient');

除非您要仔细检查它是否有效。简单地使用上面已经设置的$selectOption 会更有效。

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多