簡體   English   中英

將php變量傳遞給joomla中的javascript

[英]passing php variables to javascript in joomla

我正在嘗試為joomla制作一個使用google maps API制作地圖的模塊。

如果數據在javascript文件中硬編碼,地圖本身可以正常工作,但我希望能夠在多個站點上輕松使用它,因此從joomla后端設置所有選項將更可取。 我一直在嘗試使用JSON調用來執行此操作,但在頁面加載時它會返回錯誤500。 我的開發站點是: http//dev.xander.dk.web1.symatic.dk/

相關代碼如下:

mod_google_maps.php(制作變量並將它們連接到mod_google_maps.xml中的字段)

<?php
/**

 * Hello World! Module Entry Point
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

// no direct access
defined('_JEXEC') or die;
// Include the syndicate functions only once
require_once( dirname(__FILE__) . '/helper.php' );

$mapCenterLat = $params->get('mapCenterLat', '55.395239');
$mapCenterLng = $params->get('mapCenterLng', '10.380180');
$zoom = $params->get('zoom', '18');
$mapDisableUi = $params->get('mapDisableUi', false);
$markerLat = $params->get('markerLat', '55.395239');
$markerLng = $params->get('markerLng', '10.380180');
$markerTitle = $params->get('markerTitle', 'symatic');

helper.php

<?php
function getMapOptionsAjax(){
    $data = array('mapCenterLat' => $mapCenterLat, 'mapCenterLng' => $mapCenterLng, 'zoom' => $zoom, 'mapDisableUi' => $mapDisableUi, 'markerLat' => $markerLat, 'markerLng' => $markerLng, 'markerTitle' => $markerTitle );
    echo json_encode($data);
};
?>

maps.js(只有相關的JSON調用)

jQuery.get('index.php?option=com_ajax&module=google_maps&method=getMapOptions&format=json', function(data){
    var mapResponse = data;
    console.log(mapResponse);
});

我遺漏了其余的maps.js文件,因為它與此問題無關,並且因為它適用於硬編碼值。

500錯誤是因為您正在嘗試訪問getMapOptionsAjax()未定義變量。

我相信你正在考慮這個錯誤的方法。

如果您只想通過Joomla的模塊管理器設置在后端定義的值,那么這些值實際上是靜態值(即$params )。 所以你應該在module的模板文件中設置它們,即/modules/mod_google_maps/tmpl/default.php

在該文件中,您可以添加一個部分,設置一些Javascript變量以供maps.js文件使用。 例如

<script>
    var mapCenterLat = <?php echo $params->get('mapCenterLat', '55.395239'); ?>;
    var mapCenterLng = <?php echo $params->get('mapCenterLng', '10.380180'); ?>;
    var zoom = <?php echo $params->get('zoom', '18'); ?>;
    var mapDisableUi = <?php echo $params->get('mapDisableUi', false); ?>;
    var markerLat = <?php echo $params->get('markerLat', '55.395239'); ?>;
    var markerLng = <?php echo $params->get('markerLng', '10.380180'); ?>;
    var markerTitle = '<?php echo $params->get('markerTitle', 'symatic'); ?>';
</script>

這將呈現並發送到瀏覽器,如下所示:

<script>
    var mapCenterLat = 55.395239;
    var mapCenterLng = 10.380180;
    var zoom = 18;
    var mapDisableUi = false;
    var markerLat = 55.395239;
    var markerLng = 10.380180;
    var markerTitle = 'symatic'; // Note the quotes added around the echo
</script>

注意 mapDisableUi將返回在mod_google_maps.xml中分配的值

注意 :對於markerTitle的字符串值,在echo周圍添加了單引號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM