在CodeIgniter中声明函数外部的变量

时间:2013-05-18 12:05:42

标签: php 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

2 个答案:

答案 0 :(得分:2)

实际问题或错误的描述充其量是模糊的,但我猜这就是问题所在:

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

这不是有效的财产声明。如果要将属性“$data1”声明为数组,则必须这样做:

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

答案 1 :(得分:1)

__构造函数在每次运行脚本时调用,因此您可以在此函数中添加常量值以供查看或其他用途。

<?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);
    }
}
?>