【问题标题】:Action for an HTML button in a PHP filePHP 文件中 HTML 按钮的操作
【发布时间】:2018-06-26 11:54:09
【问题描述】:

我正在尝试在 moodle PHP 文件中实现一个按钮。具体来说,它是 SCORM 窗口。 我希望按钮具有“返回课程”功能。 目前,我设法通过一个链接来做到这一点,但我无法实现该按钮。我尝试使用 HTML 并在此文件中调用 PHP 函数。 我目前有以下内容:

    <input type="submit" name="" value="Buscar" id="boton1" onclick = "funcion();">
<script>
  function funcion(){
    alert('<?php echo accion(); ?>');
  }
</script>

function accion(){
    echo html_writer::start_div('', array('id' => 'toctree'));
    $exiturl2 = course_get_url($course, $cm->sectionnum);
    $prueba = html_writer::link($exiturl2, $strexit2, array('title' => $strexit2));
echo "<div align='center'>$prueba</div><br>"; 
$PAGE->set_button($prueba);
}

【问题讨论】:

  • 不要混合使用 php 和 javascript - 这是非常糟糕的做法,应该不惜一切代价避免。
  • “不好的做法”?? - 好吧,也许是“最好的”……我觉得,如果项目需要做,请使用您最能理解的任何方法(有时是混合 PHP 和 JS)。 “应该不惜一切代价避免”????完全不同意这一点(以及在编程和完成工作方面的任何此类“全有或全无”陈述)。
  • “目前,我设法通过一个链接做到了” - 很好,然后保留它,然后格式化它 看起来像“按钮- y”,根据您的需要。无论如何,从语义的角度来看,用按钮替换它是无稽之谈。
  • @CFPSupport 不......永远不要混合......这不是完成工作的情况,这就是导致可怕编码网站的原因,我可以保证您的项目属于该类别。它们并不是无缘无故被称为“最佳”实践,“最佳”实践意味着最高效、最佳性能和终极可读性

标签: javascript php html


【解决方案1】:

直接解决问题 - 你的问题是你是

使用 HTML 并在此文件中调用 PHP 函数。

那行不通(如您所见....)

原因很简单——如果你牢记这一点,你可以在 HTML 文件中使用 PHP(并且当页面加载正确时,页面加载速度更快as discussed herehere 以及在谈论各种Zend 等框架......)

如何在 HTML 文件中正确使用 PHP

  1. 要非常小心,您将 PHP 信息用作“模板”和/或在页面加载时提取数据。这是原始问题中的错误 - 页面加载后您无法从 PHP 获取数据(嗯,您可以,只是不能直接 - 见下文)。

    有关如何正确执行此操作的示例,请参阅引用的链接。在页面加载时,您从 PHP 变量中获取数据并将它们放入输入值(或任何您需要的值)中。这里要注意的一件事是运行收集大量数据等的长 PHP 函数。经验法则是注意页面“显示时间”,不要使用大量函数,尽管在页面初始化时设置了变量(例如在允许用户查看页面之前收集用户的权限等)是完全可以接受的(这比您的问题更高级,尽管当然框架等是如何构建的)。

2) 对于需要“长时间”加载的数据(如上面提到的那些函数),以及每次你需要做你想做的事情......

使用 HTML 并在此文件中调用 PHP 函数。

您必须使用 JS 和 AJAX 调用 PHP 页面并收集数据。关于在 SO 和整个网络上使用 AJAX 有很多问题 - 阅读并了解这些 - 在制作需要 PHP 页面数据和/或操作的页面时,您将大量使用它。

3) 将“将 JS/PHP/HTML 混合在一个文件中”放在脑海中。你必须做的(如果你打算混合它们——我相信上面的陈述阐明了何时/如何做——包括在主要框架中,等等......)就是我所说的“跳入/跳出 HTML/PHP ”。其他 SO 问题的链接显示了这一点,尽管这是一个分解的示例:

用 PHP 启动页面 在这里您可能需要授权用户等(一个示例是查看 PHP 会话并针对服务器进行验证 - 这对于这个答案来说太复杂了,所以我会保持简短)

<?php
    // gather authorization and other "can't view the page without it" variables here.  For our example, we will say that you have the $course variable
    $course = "mycourse";

     // 'jump out' of PHP and 'into' HTML by closing the PHP 
     ?> 

现在您在 HTML 中 您可以设置“课程”的输入,这样当页面显示时,您会在输入框中看到它(这是页面上 HTML/PHP 的一种非常正确和常见的用法 - 无论 JS 是否在那里还是不...)

<input type="text" id="thecourse" name="thecourse" value="

我们需要 PHP 中的变量,所以我们再次“跳转”并转到 PHP,回显变量,然后返回 HTML

<?php echo $course; ?>

并完成 HTML

">

嗯,这是对所引用示例的详细解释,尽管我相信它会有所帮助!

另一种方法(在同一页面上使用 JS 和 PHP)是使用类似

<script>
    // Note here that we 'jump' out of HTML and into JS!
    // also note that I'm using jQuery here as it is commonly used today
    $("#thecourse").val('<?php echo $mycourse;?>'); // again a 'jump' to/from PHP - within JS!
    // now, 'jump out' of JS and back to HTML...
</script>

关于如何移动和格式化数据(以及如何做到这一点的所有语言差异),有很多东西需要学习。不过,随着时间的推移,您将学会,不过,现在,让您了解“跳转”的想法,您可以做很多有趣的事情 - 快速页面加载会立即显示数据!

【讨论】:

    【解决方案2】:

    不完全确定你在追求什么。

    但可能是这样的:将&lt;input type='submit'&gt; 包装在&lt;form&gt;&lt;/form&gt; 中,并使表单的操作指向PHP 文件。在 PHP 文件中,您可以使用 header('Location: where/to/go') 或其他方式处理重定向。

    <-- html stuff -->
    <form action='path/to/php-file.php'>
        <input type='submit' name="" value="Buscar" id="boton1">
    </form>
    

    有一点是肯定的,不要混合使用 PHP 和 JS。

    【讨论】:

      猜你喜欢
      • 2017-09-29
      • 2021-07-20
      • 2015-11-16
      • 2014-03-22
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多