如何在代码点火器中调用另一个控制器中的函数?

时间:2010-11-24 06:04:20

标签: php codeigniter

我想在另一个控制器中调用一个函数。例如,如果用户尝试使用不正确的参数登录,则应用程序将重定向到另一个控制器并传递变量(数组)。

class User extends Controller {

function User()
{
   parent::Controller();
}

function doLogin()
{
  $userData = $this->users->getAuthUserData($user,$password);
  if(empty($userData)){ 
   // this is where i need to call a function from another controller
  }else{
   echo 'logged in';
  }
}

}

是否可以使用url helper中的redirect()函数传递变量?

3 个答案:

答案 0 :(得分:2)

是的,你可以使用redirect('othercontroller / function /'。url_encode($ data),'location');

这应该有效。

编辑:您也可以将代码放在帮助器中。

答案 1 :(得分:0)

<?php    
$array = array('foo'=>'bar', 'baz'=>'fubar', 'bar' => 'fuzz');

    $json = json_encode($array);

    $encoded_json= urlencode($json);
    /* now pass this variable to your URL redirect)

    /* on your receiving page:*/
    $decoded_json= urldecode($encoded_json);

    /* convert JSON string to an array and output it */
    print_r(json_decode($decoded_json, true));
?>

此代码:

获取一个数组,将其转换为JSON编码的字符串。

然后我们使用$jsonurl_encode字符串进行编码。你可以通过网址传递这个。

解码此URL,然后将JSON对象解码为关联数组。

可能值得一试

答案 2 :(得分:0)

如果要从另一个控制器调用一个控制器的功能,则可以使用重定向帮助程序。

例如:

class Logout extends CI_Controller { 

     function index() {     
        session_destroy();
        redirect('index.php/home/', 'refresh');
     } 

}

它会调用另一个控制器。