教程栏目

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章 页面构造器

第17章 joomla升级

第18章 其他系统迁移

第19章 流量翻倍计划