在本节中,将会实现编辑留言和新建留言的功能。至此,一个完整的留言板就完成了。
完成编辑页面的逻辑如下:
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)