[HMVC ??]调用另一个控制器中的函数并获取值

时间:2011-08-18 13:13:30

标签: kohana-3

我正面临一种情况,我需要调用一个函数来检查一些状态。

$lastupdate=Request::factory('user/getlastupdate/'.$userid.'')->execute();

我的getlastupdate函数如下所示:

public function action_getlastupdate($userid){

    $status=array();

    try{

$updatestatus= ORM::factory('updates')
    ->where('id', '=', $userid)
    ->where('deleted', '=',0)
    ->find_all();
//check if result returned values
$resultcount=count($updatestatus);
//if result has data
if($resultcount>0){
         foreach($updatestatus as $status)
    {
            $stat="found";
    $result= 'Profile Last Updated on'.$updatestatus->lastupdate; 

    }

}//end if result has data

//if record returned no values
else{
    $stat="missing";
$result= 'Profile Data Missing';   

}//end if resultcount>0

}//end try
catch(ORM_Validation_Exception $e)
{
    $stat="error";
$result="Profile Update Search Error ".$e->errors('updates');  

}///end catch
    $status['result']=$result;
    $status['stat']=$stat;

    $this->response->body(View::factory('pages/updatestatus', $status));

}//end function

这有效,但我不想渲染视图。我想返回数组状态并从我的控制器中调用此方法使用它。我该如何实现呢?如果我从同一个控制器调用来自不同控制器的vis调用,代码会改变吗?

我正在使用kostache模板,所以在将最终输出渲染到我的视图之前,我需要使用状态[values]。

1 个答案:

答案 0 :(得分:0)

您可以为子查询发送一个额外参数,该参数将指示是否自动呈现视图。

$lastupdate=Request::factory('user/getlastupdate/'.$userid.'/off')->execute();

并在你的行动getlastupdate中检查参数

action_getlastupdate($userid, $renderView = '')
{
 if( $renderView === 'off' )
 {
   $this->auto_render = FALSE;
 }
 [...]
}