教程栏目

joomla中文网出品的官方教程

在本节中,将会实现编辑留言和新建留言的功能。至此,一个完整的留言板就完成了。

 完成编辑页面的逻辑如下:

1,通过勾选checkbox来选择你要编辑的留言。

2,点击编辑按钮。提交表单,task=edit

3, 在模型中 从数据库中得到需要编辑的记录的消息信息

4,在编辑视图中显示编辑界面。

5,提供保存 和 取消功能。

首先在主控制器中增加处理编辑的处理函数:

代码如下:

 
function edit()
	{	
		$input = &JFactory::getApplication()->input;
		$input ->set('view',$input->getCmd('view','messageedit'));
		parent::display();
	}
	
	function save()
	{
		$model = & $this->getModel("MessageEdit");
		if($model->saveMessage())
		{
			$text="留言成功修改!";
		}
		else
		{
			$text="留言修改失败!";
		}
		
		$link = 'index.php?option=com_guestbook';
		$this->setRedirect($link,$text);
	}
	
	function cancel()
	{
		$link = 'index.php?option=com_guestbook';
		$this->setRedirect($link);
	}

新建一个模型文件,messageedit.php。其内容如下:

 
//后台的messageedit的模型类
defined('_JEXEC') or die('Restricted Access');

jimport('joomla.application.component.model');

// GuestBOOk 组件的 编辑消息模型 
class GuestbookModelMessageEdit extends JModel
{	
	//得到message
	 function getMessage()
	 {
		$cids = JRequest::getVar('cid');
		if(is_array($cids))
		{
			$id = $cids[0];
		}
$id = $cids;
$db = &JFactory::getDBO(); $query = $db->getQuery(true); $query->select("*")->from($db->nameQuote('#__guestbook'))->where($db->nameQuote('message_id')."= ".$id); $db->setQuery((string)$query); $message = $db->LoadObject(); return $message; } // 存储信息 function saveMessage() { $table = &$this->getTable("guestbook"); $postdata = JRequest::get('POST'); $data['message_subject'] = $postdata['subject']; $data['message_content'] = $postdata['content']; $data['message_author'] = $postdata['author']; $data['message_author_email'] = $postdata['email']; $data['message_id'] = $postdata['id']; if($postdata['time']=="") { date_default_timezone_set("Asia/Shanghai"); $postdata['time']= date("Y-m-d H:m:s"); } $data['message_time'] = $postdata['time']; $data['message_publish'] = $postdata['publish']; $data['message_user_id'] = $postdata['user_id']; if(!$table ->bind($data)) { $this->setError($this -> _db->getErrorMsg()); return false; } if(!$table->check()) { $this->setError($this->_db->getErrorMsg()); return false; } if(!$table->store()) { $this->setError($this->_db->getErrorMsg()); return false; } return true; } }
2013-11-06 更正:上面的代码有错误:
错误的位置为:判断cids是否是数组。正确的代码为:
if(is_array($cids))
{
$id = $cids[0];
}
else
{
$id = $cids;
}

 

在视图文件夹下新建一个视图messageedit。

view.html.php代码如下:

 

<?php
//留言板后台编辑留言界面
defined('_JEXEC') or die ('can not access this file!');
$document = & JFactory::getDocument();
$document ->addStyleSheet(JURI::root()."components/com_guestbook/css/guestbook.css");
?>
<form action="index.php" method="post" name="adminForm">
<div class="gb_page">

<div class="gb_body">

<div class="message">
<div class="title subject">主题:</div>
<div class="input"><input type="text" value="<?php echo $this->message->message_subject;?>" name="subject" size="40"/></div>

<div class="line_nav"></div>

<div class="title text">正文:</div>
<div class="input"><textarea cols="70" rows="5" name="content" ><?php echo $this->message->message_content;?></textarea></div>

<div class="line_nav"></div>

<div class="title">作者:</div>
<div class="input"><input type="text" name="author" size="40" value="<?php echo $this->message->message_author;?>" /></div>

<div class="line_nav"></div>

<div class="title">Email: </div>
<div class="input"><input type="text" name="email" size="40" value="<?php echo $this->message->message_author_email;?>" /></div>

<div class="line_nav"></div>

<div class="title">时间: </div>
<div class="input"><input type="text" name="time" size="40" value="<?php echo $this->message->message_time;?>" /></div>

<div class="line_nav"></div>

<div class="title">发布状态: </div>
<div class="input"><input type="text" name="publish" size="40" value="<?php echo $this->message->message_publish;?>" /></div>

<div class="line_nav"></div>

<div class="title">用户类型: </div>
<div class="input"><input type="text" name="user_id" size="40" value="<?php echo $this->message->message_user_id;?>" /></div>

</div>

</div>
</div>
<input type="hidden" name="option" value="com_guestbook"/>
<input type="hidden" name="task" value=""/>
<input type="hidden" name="id" value="<?php echo $this->message->message_id;?>" />
</form>

 

看一下效果图:

 

 保存后:

 需要解释一下:上面的截图中主题和正文都是链接。这是因为我在视图中将他们都加上了a链接。

代码如下:

$subjectLink = JHTML::_('link','index.php?option=com_guestbook&task=edit&cid='.$message->message_id,$message->message_subject);
$contentLink = JHTML::_('link','index.php?option=com_guestbook&task=edit&cid='.$message->message_id,$message->message_content);

当然我们可以用a链接来实现同样的效果。Joomla为我们提供了很多方法来产生xhtml元素。上面的link就是产生链接。

编辑和新建页面差不多,在此就不写了。

 

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器