【问题标题】:Passing form value in joomla在 joomla 中传递表单值
【发布时间】:2014-01-08 13:22:27
【问题描述】:

我想升级我的一个 joomla 2.5 插件(自行开发)。这是一项复杂的任务,但这是我无法解决的具体问题。我想在我的文章中放置一个带有提交按钮的输入字段(完成),提交后我想得到它。就这么简单。

代码大纲如下:

形式:

    <form action="" method="post">
    <input type="text" name="info">
    <input type="submit" value="ok">
    </form>

过程:

    $jinput = JFactory::getApplication()->input;
    $foo = $jinput->get('info', '444'); 
    print_r($foo);

基本上它应该可以工作,但不知何故我没有得到这个值,总是接收默认值“444”。如果我将操作更改为外部 php 文件,并以 php 方式处理,它可以工作。

到目前为止我检查的内容:

一个。将表单方法更改为 GET。结果:需要的值正确显示在文章的 URL 中,但仍然打印默认值 '444' 而不是我在 URL 中看到的值(如果未设置默认值,则不会打印任何内容)。

b.将值传递给外部 .php 文件,存储在 session 中,并在文章中回显 session 值,但再次为空。

也许我会通过爆炸 $_SERVER["REQUEST_URI"] 来强制获取 GET 值,但我无法入睡,直到我发现所需进程可能有什么问题。

有人可以帮忙吗?

更新:也许很重要 - 我使用 K2 插件。

【问题讨论】:

  • 有趣。您可以print_r($jinput) 甚至JFactory::getApplication()-&gt;input-&gt;post 并检查那里的值吗?
  • 我怀疑它与触发插件的事件的时间有关。也许在部署插件之后请求输入或输出......
  • 你能检查一下 $_POST['info'] 是否有效吗?
  • 触发器是onK2beforeDisplay。我尝试了 onK2PrepareContent 但没有。
  • 德米特里:值为空。

标签: forms joomla


【解决方案1】:

到目前为止,我可以弄清楚以下内容:

这是一个特例。在我的本地服务器上,该代码适用于普通的 joomla 文章和 K2 组件文章。

在我的网站上,该代码也适用于普通的 joomla 文章,因此它绝对是 K2 设置问题。

问题可能与 K2 高级 SEF 设置(指定 K2 项目的 url)有关,但事实并非如此。问题出在我的网站上,所以我在我的本地主机版本上使用了网站版本的 SEF 设置,并且我得到了很好的值。 == 不是 K2 高级 SEF 设置问题。

这是我问题的答案:“应该找出导致问题的 K2 设置”

更新。解决方案:在全局配置中关闭缓存,这样页面就不会从缓存中加载。在缓存中没有存储给定的值 - 很明显。

【讨论】:

  • 在我的本地主机上,当根不以斜杠结尾并且使用了 .htaccess 重写器时,我没有收到任何 POST 数据:http://localhost/projects/test。您是否尝试使用 info 以外的其他密钥?
  • 感谢 piotr_cz 的评论,我也尝试过使用其他键 - 没有效果。 .htaccess-thing:我不认为这取决于 .htaccess 文件,因为我也将代码放在 content.php 中(以检查我的代码是否适用于常规的 joomla 文章)并且它有效。所以这绝对是一个 K2 特定的问题
  • 也许 K2 正在覆盖 JInput 值? $_POSTJRequest::getVar('info') 呢。
  • 我确信 K2 正在覆盖 JInput 值,但是在哪里呢?越来越沮丧:) $_POSTJRequest::getVar() 也是空的
  • 问题一定是在组件部分和模板部分之间。如果我将echo JURI::getInstance()-&gt;toString(); 行文件逐个文件放在组件库中,它会返回整个值。当我使用模板文件执行此操作时,它仅返回核心 URI。不是吗?
猜你喜欢
  • 2011-06-09
  • 2013-04-20
  • 2012-05-11
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 2014-03-09
相关资源
最近更新 更多