将在本节中解决joomla如何使用前台提交的数据的问题。

  在第九节我们谈了一下MVC。希望现在读者可以对joomlaMVC有一个比较深的认识。现在继续第八节的话题,我们已经可以在前台提供留言的界面了,浏览者现在已经写好了需要留言的内容了,当他点击确认提交按钮后,这些数据将何去何从?

     在提交留言界面,我们使用了一个form.在default.php文件中发现了如下代码:

<form action="<?php echo JRoute::_('index.php?option=com_guestbook&task=postmessage');?>

 Joomla 将请求提交了index.php?option=com_guestbook&task=postmessage这个地方了。依据第九节中的介 绍,我们知道这个链接的意思就是让guestbook组件控制器文件类中的postmessage这个函数来处理这个请求。ok,既然这样,下面就来实现 这个postmessage函数。看看执行的效果。

GuestBookControlelr 类中增加postmessage()方法。代码如下:


  function postmessage()
  {
     echo "Hello ,I am from postmessage;";
  } 

在提交留言页面点击确认提交后的执行结果截图:

说明,系统是按照我们的想法来执行的。

解决了将页面提交到哪的问题,下一个问题就是如何获得提交的数据。

在PHP中一般可以使用超全局变量来获取表单中的数据。我们在joomla中也是一下,看能不能使用。继续修改postmessage函数。代码如下:

 

	function postmessage()
	{
		$subject = $_POST['subject'];
		$content = $_POST['content'];
		$author = $_POST['author'];
		$email = $_POST['email'];
		
		echo "subject = ".$subject;
		echo "content = ".$content;
		echo "author = ".$author;
		echo "author = ".$email;
	}

前台输入截图:

提交后截图:

以上截图说明,我们成功的获取了从前台提交的数据了。

获取数据在joomla中是十分重要的,因此joomla也有实现了相应的API.下面我们使用joomla提供的API来获取数据。修改postmessage函数。代码如下:

	function postmessage()
	{
		$subject = JRequest::getVar('subject');
		$content = JRequest::getVar('content');
		$author = JRequest::getVar('author');
		$email = JRequest::getVar('email');
		
		echo "subject = ".$subject;
		echo "content = ".$content;
		echo "author = ".$author";
		echo "author = ".$email";
	}

 

代码修改后,执行的结果是一致的。在这里就不截图了。简单的说一下,getVar是JRequest类的一个静态方法,当需要获取变量值的使用就使用JRequest::getVar()来获得。getVar函数可以接受2个参数。如下:

 JRequest::getVar(变量名,默认值);

使用非常简单。在Joomla中,建议用getVar来获取变量的值,而不是使用$_POST的形式。 

 至此,我们就顺利的解决了第二个问题。这一节的任务就算完成了。

但还有一个问题很值得我们去思考,当提交留言的时候,显示结果的页面是哪一个页面?更专业的说法是显示了哪一个视图,输出了哪一个layout?如果你对这个问题有自己的见解,欢迎讨论。

评论 (0)

  • 最新在前
  • 最佳在前