1

在弄清楚如何一起使用 Ajax 和 Joomla 框架方面仍然存在问题。我创建了一个可以访问的 Joomla 组件:

index.php?option=com_mycomponent

我在 Ajax 中使用 Jquery components/com_mycomponent/views/mycomponent/tmpl/default.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<html>
<head>
  <title>Ajax with jQuery Example</title>

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/JavaScript">
  $(document).ready(function(){
    $("#generate").click(function(){
  $("#quote p").load("components/com_mycomponent/views/mycomponent/tmpl/script.php");

    });
  });
  </script>
</head>
<body>
  <div id="wrapper">
    <div id="quote"><p> </p></div>
    <input type="submit" id="generate" value="Generate!">
  </div>
</body>
</html>

然后在 script.php 文件中我有这个:

<?php  
$user =& JFactory::getUser();
echo "This is the user: ".$user;
?> 

如果我没有在 script.php 中放置任何 Joomla 框架代码,它就可以正常工作。但这样做的目的是我需要使用 Joomla 框架,因此是创建组件的重点。但我仍然不明白我需要如何构建 Joomla 组件,这样我就不会收到Class 'JFactory' not found错误消息?

4

2 回答 2

1

我认为正确的方法是在组件的 controller.php 文件中添加一个任务。

http://docs.joomla.org/Adding_AJAX_to_your_component

于 2012-08-01T15:35:16.363 回答
0

最终没有花费太长时间。唯一需要的文件是 default.php,因此您可以删除其中的 script.php 和其他奇怪的文件。

默认.php

<?php
defined('_JEXEC') or die('Restricted access');

//$document =& JFactory::getDocument();
//$document->addScript("https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");
$user =& JFactory::getUser();
?>

<div id="wrapper">
    <div id="quote" style="display:none; padding-bottom:10px;">
        <?php 
          echo "<p>This is your username: " . $user->username . "</p>"; 
          echo "<p>This is your realname: " . $user->name . "</p>"; 
          echo "<p>This is your user ID: " . $user->id . "</p>";
        ?>
    </div>
    <input type="submit" id="generate" value="Generate!">
</div>

<script type="text/javascript">
$(document).ready(function(){
     $("#generate").click(function(){
          $("#quote").show();
     });
});
</script>

我已经在代码中注释掉了 jquery 引用,因为 widgetkit 已经在加载它的副本,但将它保留在那里以防万一。

它不是加载另一个文件,而是隐藏#quotediv 标签,当单击按钮时,它会显示它以及其中的数据。在这一个中,我添加了realnameuser ID以防万一。

希望这可以帮助。

问候

于 2012-08-01T03:32:33.600 回答