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