【问题标题】:How to make a <?php if statement work in <script>如何使 <?php if 语句在 <script> 中工作
【发布时间】:2014-05-07 01:58:00
【问题描述】:

我正在添加一个我设计用于 joomla K2 模块的地图系统。 Joomla 系统目前使用以下代码来输出每个项目的信息。

<ul>
    <?php foreach ($item2->extra_fields as $key=>$extraField): ?>
    <?php if($extraField->value != ''): ?>
        <li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
        <?php if($extraField->type == 'header'): ?>
            <h4 class="itemExtraFieldsHeader"><?php echo $extraField->name; ?></h4>
        <?php else: ?>
            <span class="itemExtraFieldsLabel"><?php echo $extraField->name; ?>:</span>
            <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
        <?php endif; ?>
        </li>
        <?php endif; ?>
<?php endforeach; ?>
</ul>

输出如下所示:

  • 名字:乔治
  • 姓氏:拉姆齐
  • 公园部分:宁静花园
  • 墓地:D15

现在在一个名为 default.php 的文件中,我输入了以下代码来显示地图。现在完成了,我需要它在地图中创建一个弹出窗口,显示每个项目/人的信息。我计划使用前面提到的 php 代码来执行此操作。这是一个应该是什么样子的示例http://visuarch.net/map/dovecot-map.html

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" />
    <!--[if lte IE 8]>
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.ie.css" />
    <![endif]-->

    <script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script>
    <script>
      function init() {
        var mapMinZoom = 3;
        var mapMaxZoom = 8;
        var map = L.map('map', {
          maxZoom: mapMaxZoom,
          minZoom: mapMinZoom,

        }).setView([70, -100], mapMaxZoom);

        var mapBounds = new L.LatLngBounds(
            map.unproject([0, 27136], mapMaxZoom),
            map.unproject([50176, 0], mapMaxZoom));

        map.fitBounds(mapBounds);
        L.tileLayer('http://visuarch.net/map/{z}/{x}/{y}.png', {
          minZoom: mapMinZoom, maxZoom: mapMaxZoom,
          bounds: mapBounds,
          attribution: 'Copyright © 2014 Dovecot of St. James Memorial Park.',
          noWrap: true          
        }).addTo(map);
         map.attributionControl.setPrefix('');

         var plotset3 = [
    [80.1261, -101.7334],
    [80.93535, -90.54932],
    [78.90816, -85.979],
    [77.82332, -96.45996]
];

var plotset4 = [
    [69.95291, -57.78809],
    [68.22052, -69.16992],
    [70.83025, -73.125],
    [72.44879, -61.25977]
];

var plotset5 = [
    [68.24497, -68.18115],
    [68.19605, -60.6665],
    [66.80057, -60.64453],
    [66.86972, -68.20312]
];

var plotset6 = [
    [66.19601, -67.03857],
    [66.39036, -58.97461],
    [60.72694, -53.23975],
    [59.84481, -56.88721],
    [59.22093, -56.25],
    [58.43623, -59.43604]
];


var plotset = L.polygon([ plotset3, plotset4, plotset5, plotset6], {
    color: "#000",
    weight: 1,
}).addTo(map);
    var popup = L.popup()
    .setLatLng([73.64017, -100.32715])
    .setContent( "<h4><center><b>JOHN DOE</b></center></h4> <center><img src='http://visuarch.net/dovecot/media/k2/items/cache/48ee1e8a0a8f50dce4f8cb9ab418e211_XS.jpg' border='1px'> </center><br>Section:<b> Park Section</b> <br> Plot ID:<b> J15</b>"


                      )

    .openOn(map);
      }

      jQuery(document).ready(function() {
            init();
      });

    </script>

这是我用于示例的代码:

var popup = L.popup()
    .setLatLng([73.64017, -100.32715])
    .setContent( "<h4><center><b>JOHN DOE</b></center></h4> <center><img src='http://visuarch.net/dovecot/media/k2/items/cache/48ee1e8a0a8f50dce4f8cb9ab418e211_XS.jpg' border='1px'> </center><br>Section:<b> Park Section</b> <br> Plot ID:<b> J15</b>")
    .openOn(map);

我只需要知道如何使用.setContent部分中的php来输出我需要的信息。

请帮忙!!!

尽可能详细我不擅长 javascript。

谢谢。

【问题讨论】:

  • 看起来 .setContent 正在客户端注入 html,因为 javascript 在客户端上运行。 Php 在服务器端运行,所以我不认为你可以做你想做的事情并让它按照你期望的方式工作。
  • 有趣....那么你会推荐我做什么? @dboals 我如何调用和输出信息?
  • 一些 ajax 可以完成这项工作。它会调用一个 php 脚本来获取你想要的任何数据。
  • 好吧,别小看我,但你能告诉我具体该怎么做吗?我还是个编程新手。我只擅长 HTML、CSS 和一点 javascript。这是我在这个项目上要做的最后一点,明天实际上是最后期限。请帮忙!如果你需要,我会让你访问这些文件。@melsi
  • 您将把default.php 文件放在哪里?您想修改 k2 模块以显示地图或将其显示在其他地方的单独页面上,而不必将模块放在那里?

标签: javascript php if-statement joomla joomla-k2


【解决方案1】:

我想通了,见下图:

var content = "<ul>";
        <?php foreach ($item2->extra_fields as $key=>$extraField): ?>
            <?php if($extraField->value != ''): ?>
            content += "<li class='<?php echo ($key%2) ? 'odd' : 'even'; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>'>";
                <?php if($extraField->type == 'header'): ?>
                content += "<h4 class='itemExtraFieldsHeader'><?php echo $extraField->name; ?></h4>";
                <?php else: ?>
                content += "<span class='itemExtraFieldsLabel'><?php echo $extraField->name; ?>:</span>";
                content += "<span class='itemExtraFieldsValue'><?php echo $extraField->value; ?></span>";
                <?php endif; ?>
            content += "</li>";
            <?php endif; ?>
        <?php endforeach; ?>
    content += "</ul>";

var popup = L.popup()
.setContent(content).openOn(map);

【讨论】:

  • 当您可以直接在 HTML 中加载内容时,为什么还要使用 Javascript setContent...?此代码甚至不提供实时更新...
  • @JohnWHSmith setContent 是传单地图系统用来在弹出气泡中显示内容的内容。地图本身在 javascript 中,所以我所做的就是在我想要的 javascript 地图中显示内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多