2013-05-18 51 views
0

我是CodeIgniter的新手。我试图在点击一个提交后再次输出一个视图,但视图有一个来自控制器的变量,但是当我尝试它时,它不起作用。在CodeIgniter中声明一个函数以外的变量

<?php 
    class Site extends CI_Controller{ 

     public $data1['value'] = "What to insert"; 

     public function index(){ 
      $this->load->view('home',$this->data1); 
     } 

    public function get_product(){ 
      $data = array(
       'product_name' => $this->input->post('prod_name') 
      ); 
      $this->site_model->insert_product($data); 
      $this->load->view('home',$this->data1); 
     } 

    } 
?> 

这是我的观点:

<div id="container"> 
<h1><?php echo $data1;?></h1> 

    <?php echo form_open('site/get_product'); ?> 

    <p> 
     <label for="product">Product Name </label> 
     <input type="text" id="product" name="prod_name" /> 
    </p>  

    <input type="submit" name="submit_but" value="submit"> 

<?php echo form_close(); ?> 

</div> 

get_product我需要再次调用视图,但我知道它会是这样的麻烦,如果我要在函数内部再次声明。

错误:

Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\xampp\htdocs\code_igniter\application\controllers\site.php on line 9 
+0

“不起作用”是什么意思? – deceze

+0

即时通讯有一个错误..对不起忘了包括..解析错误:语法错误,意外的'[',期待','或';'在第9行的C:\ xampp \ htdocs \ code_igniter \ application \ controllers \ site.php中 – Aoi

回答

1

__construct函数调用每次运行脚本时,所以你可以在这个函数添加您的常量值查看或其他用法。

<?php 
class Site extends CI_Controller{ 
    public $data1 = array(); 

    public function __construct() { 
     $this->data1['value'] = "bla bla"; 
    } 

    public function index(){ 
     $this->load->view('home',$this->data1); 
    } 

    public function get_product(){ 
     $data = array(
     'product_name' => $this->input->post('prod_name') 
     ); 
     $this->site_model->insert_product($data); 
     $this->load->view('home',$this->data1); 
    } 
} 
?> 
2

实际问题或错误的描述是模糊的,在最好的,但我想,这就是问题所在:

public $data1['value'] = "What to insert"; 

这不是一个有效的声明属性。如果您想将财产“$data1”声明为一个数组,那么你可以这样做:

public $data1 = array('value' => "What to insert");