The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 完成一个任务 ]

紧接着上面的一节,下面我们完成做任务的功能。

如果,某个时候,我们发现我们的任务已经完成了,这个时候,我们需要更新我们的任务列表。

更新我们的任务列表,位于IndexController.class.php中do_task。

  1. public function do_task(){   
  2.           
  3.        // 判断是否已经登录   
  4.        if(  $GLOBALS['___login___']===false  )   
  5.            $this->E( G::L( '你没有登录' ) );   
  6.           
  7.        $nTaskId=  intval(Safe::getGpc( 'id' ));   
  8.           
  9.        if( !empty($nTaskId) ){   
  10.              
  11.           $oTask = TaskModel::F( 'task_id=?',$nTaskId )   
  12.                    ->query();   
  13.   
  14.           if( empty($oTask['task_id']) ){   
  15.                 
  16.              $this->E( '任务不存在' );   
  17.           }   
  18.   
  19.           else{   
  20.               if( $GLOBALS['___login___']['user_id']!=$oTask['user_id'] ){   
  21.                      
  22.                   $this->E( '你不能做别人的任务' );   
  23.               }   
  24.   
  25.               else{   
  26.                     
  27.                   if( $oTask['task_is_completed']==1 )   
  28.                       $this->E('任务已经完成了,你不需要重复做任务!');   
  29.                   $this->assign( 'oTask',$oTask );   
  30.                   $this->display( );   
  31.               }   
  32.           }   
  33.        }   
  34.   
  35.        else  
  36.            $this->E( '你没有选择任务' );   
  37. }  


然后,我们创建index_do_task.html,并且添加上如下的代码:
  1. <include file="public_header">       
  2.       
  3.     <div id="content_wrapper">       
  4.       <div id="content">       
  5.          <form name="form_task" id="form_task" action="{:G::U('index/do_the_task')}" method="post">       
  6.         
  7.   <fieldset>       
  8.     <p>       
  9.       <label for="task_subject">任务主题</label> <br/>        
  10.       <p style="color:blue;">{$oTask['task_subject']}</p>     
  11.     </p>       
  12.         
  13.     <p>       
  14.       <label for="task_description">任务内容</label><br/>       
  15.       <p style="color:blue;">{$oTask['task_description']}</p>   
  16.     </p>       
  17.         
  18.     <p>       
  19.       <input type="submit" name="Submit" value="完成任务" />      
  20.       <input type="hidden"  name="id" value="{$oTask['task_id']}"/>   
  21.       <input type="hidden"  name="task_is_completed" value="1"/>   
  22.     </p>       
  23.   
  24.         
  25.   </fieldset>       
  26.         
  27. </form>     
  28. <p>你可以返回首页,<a href="{:G::U( 'index/index' )}">返回首页</a> </p>   
  29.       </div>       
  30.       <include file="public_sidebar">       
  31.       
  32. <include file="public_footer">   


访问http://localhost/wedoit/index.php/index/do_task/id/1 后,你会看到。



接下来,我们完成逻辑代码,位于IndexController.class.php中do_the_task:
  1. public function do_the_task(){   
  2.           
  3.         // 判断是否已经登录   
  4.         if(  $GLOBALS['___login___']===false  )   
  5.             $this->E( G::L( '你没有登录' ) );   
  6.   
  7.         $nId = intval( Safe::getGpc( 'id' ) );   
  8.         $oTask = TaskModel::F( 'task_id=?',$nId )   
  9.                        ->query();   
  10.   
  11.   
  12.         if( empty($oTask['task_id']) ){   
  13.                 
  14.             $this->E( '任务不存在' );   
  15.         }   
  16.   
  17.         else{   
  18.                
  19.             if( $GLOBALS['___login___']['user_id']!=$oTask['user_id'] ){   
  20.                      
  21.                 $this->E( '你不能做别人的任务' );   
  22.             }   
  23.   
  24.             else{   
  25.   
  26.                 $oTask->save( 0,'update' );   
  27.                 if( $oTask->isError() )   
  28.                     $this->E( $oTask->getErrorMessage() );   
  29.   
  30.                 $this->assign( '__JumpUrl__',G::U( 'index/index' ) );   
  31.                 $this->S( '任务已完成' );   
  32.             }   
  33.         }   
  34.   
  35. }  


}

点击提交后,我们再次访问首页后,你会发现,任务已经完成。
如图2: