2012-07-18 68 views
0

我在控制器中使用以下代码。但数据['msg']没有被传递给视图文件。无法在代码视图中访问控制器数据

代码:

class Operator{ 


public function view ($page) 
{ 
    if (! file_exists('application/views/pages/'.$page.'.php')) 
    { 
     // Whoops, we don't have a page for that! 
     show_404(); 
    } 

    $data['title'] = $this->getTitle($page); 
    $this->load->view('templates/header', $data); 
    $this->load->view('pages/'.$page, $data); 
    $this->load->view('templates/footer', $data); 

} 
public function create_company() 
{ 
     // some code 
    $data['msg1']='my mesg'; 
    redirect('operator/view/operator_success','refresh'); 
} 
}; 

当operator_success(视图页)装载它显示错误消息:变量 '$ MSG1' 未被定义。

+0

你有一个错字:data ['msg1'] ='my mesg'; => $ data ['msg1'] ='我的mesg'; – Mahn 2012-07-18 17:30:52

+0

您可能希望检查类'Operator'中'$ data'的作用域。你应该使用一个类变量。另外,'Operator'应该可以扩展'CI_Controller'。 – 2012-07-18 17:31:30

+0

除非您使用会话,否则如果您正在进行重定向,则数据不可能持续存在。 – Mahn 2012-07-18 17:33:48

回答

0

重定向后则不能使用该变量或阵列。而应将变量设置为保留在会话或CodeIgniter Flash Data中。

class Operator 
{ 

    public function view($page) 
    { 
     if (!file_exists('application/views/pages/' . $page . '.php')) { 
      // Whoops, we don't have a page for that! 
      show_404(); 
     } 

     $data['title'] = $this->getTitle($page); 
     $this->load->view('templates/header', $data); 
     $this->load->view('pages/' . $page, $data); 
     $this->load->view('templates/footer', $data); 
    } 

    public function create_company() 
    { 
     // some code 
     $data['msg1'] = 'my mesg'; 

     // DO THIS 
     $this->session->set_flashdata('msg1', 'my mesg'); 
     // OR 
     $this->session->set_userdata('msg1', 'my mesg'); 
     redirect('operator/view/operator_success', 'refresh'); 
    } 

} 

重定向后,您可以简单地调用flashdata。

echo $this->session->flashdata('msg1'); 
// OR 
echo $this->session->userdata('msg1'); 

您必须在使用之前初始化会话,自动加载会话库或手动加载。

[1]自动加载会话库(配置/ autoload.php)

$autoload['libraries'] = array('session'); 

[2]手动加载库

$this->load->library('session'); 

看到更多的有关会话和闪存数据here。希望这可以帮助你。谢谢!!

+0

我是CodeIg的新手。如果没有设置会话会怎么样。这会创建一个新的会话吗?或者如果会话已经设置了会怎样?会使用同一个会话吗? – Sarthak 2012-07-18 18:14:00

+0

@Sarthak,我更新了答案。您必须加载会话库才能使用userdata或flashdata。 – 2012-07-18 18:23:10

1

这是因为data['msg1']已设置,则页面被重定向(不携带带有它的data数组)。

如果你想data坚持,那么你需要使用sessionscookies

0

你有重定向设置变量之后所以必须设置此消息或者在会议(“闪光”消息)或操作者/视图/控制器operator_success上