将在本节中解决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)