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

发布于 2024-11-30 00:45:13 字数 1283 浏览 0 评论 0原文

我面临着需要调用函数来检查某些状态的情况。

$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 模板,因此我需要在将最终输出渲染到我的视图之前使用 status[values]。

I am facing a situation where I need to call a function to check some status.

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

My getlastupdate function looks like this:

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

This works but I do not want to render the view. I want to return the array status and use it from within my controller which is calling this method. How can I implement this? Does the code change if I call from the same controller vis a vis calling from a different controller?

I am using kostache templates so I need to play with the status[values] before rendering final output to my view.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诠释孤独 2024-12-07 00:45:13

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

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

并在您的操作 getlastupdate 中检查参数

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

You could send an extra parameter for your subquery which will indicate whether to auto render the view or not.

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

and in your action getlastupdate check the parameter

action_getlastupdate($userid, $renderView = '')
{
 if( $renderView === 'off' )
 {
   $this->auto_render = FALSE;
 }
 [...]
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文