传递变量以从控制器查看

时间:2014-03-23 15:55:03

标签: php codeigniter

可以这样做吗?我想将一个变量从公共函数传递给我的视图。

public function index() {

    $home_data['username']  = "myname";
            $home_data['cool'] = $this->variable;

    $this->load->view('home_view', $home_data);
}

public function a_function() {

      public $variable = "cool";      

}

// // EDIT

这就是我实际想要完成的事情而且我被卡住了。

get_two从表中获取两个项目。我想将两个项添加到两个变量并将它们传递给视图。

public function get_two() {

           $get_results = $this->home_model->get_two_brands();

            if($get_results != false){

              $html = '';

               foreach($get_results as $result){
                     $html .= '<li><a href="#" class="pick" id="'.$result->id.'">'.$result->brand.'</a></li>';
                }

                 $result = array('status' => 'ok', 'content' => $html);
                    header('Content-type: application/json');
                    echo json_encode($result);
                    exit();

            }

}//public function get_two() {

我应该创建这样的两个函数吗?但我不知道如何将$get_results数组从get_two传递给下面的函数。我试过了public $get_results = $this->model ... etc,但这没效果。

public function result_one() {
    return $resultOne = $get_results[0];
}

public function result_two() {
    return $resultTwo = $get_results[1];
}

3 个答案:

答案 0 :(得分:3)

我不确定我是否正确地提出了问题,但你想要达到的目标是什么?

public function index() {

    $home_data['username']  = "myname";
    $home_data['cool'] = $this->a_function();

    $this->load->view('home_view', $home_data);
}

public function a_function() {

  return $variable = "cool";      

}

/ **编辑后** /

事情变得复杂(可能是因为我的英语理解力)。

你说

  

get_two从表中获取两个项目。我想将这两个项添加到两个变量中并将它们传递给视图。

所以从函数get_two()你需要以这种方式得到并使用结果吗?

public function index() {

    $home_data['username']  = "myname";
    $home_data['cool'] = $this->get_two(); // <- here?

    $this->load->view('home_view', $home_data);
}

所以你可以试试:

public function get_two() {

    $get_results = $this->home_model->get_two_brands();

    if($get_results != false){

       return $get_results;
    }
}

然后

public function index() {

    $home_data['username']  = "myname";

    $home_data['cool'] = $this->get_two();

    $this->load->view('home_view', $home_data);
}

并且在你的home_view内:

<?php

foreach($home_data['cool'] as $result){
    echo '<li><a href="#" class="pick" id="'.$result->id.'">'.$result->brand.'</a></li>';
}

?>

/ **新问题** /

  

我需要将两个选项的ID作为两个不同的变量

所以改变index function这样:

public function index() {

    $home_data['username']  = "myname";
    $home_data['cool'] = $this->get_two(); // <- maybe you don't need this anymore

    list($result1, $result2) = $this->get_two();

    $home_data['resultId1'] = $result1->id;
    $home_data['resultId2'] = $result2->id;

    $this->load->view('home_view', $home_data);
}

现在,您可以在视图中使用$home_data['resultId1']$home_data['resultId1']了。

答案 1 :(得分:0)

我不知道codeigniter框架,所以这就是为什么我要求你查看部分视图,但是当我查看文档时它看起来很简单。那里的医生也不错。

检查Adding Dynamic Data to the View

public_function()应该返回一些东西,例如:

function public_function() {
 return 'groovy';
}

然后在控制器中调用它:

public function index() {

    $home_data['username']  = "myname";
    $home_data['cool'] = $this->public_function();

    $this->load->view('home_view', $home_data);
}

然后在某处添加到视图中 <?php echo $home_data['cool'];?>

我认为它包含在某个类中。所以,如果你不能return你需要的值(例如,函数已经返回其他东西),那么做这样的事情:

class Someclass {

 public $some_class_variable;

 function public_function() {
  $this->some_class_variable = 'groovy';
 }

 function index() {
  $home_data['cool'] = $this->some_class_variable;
 }

}

答案 2 :(得分:0)

您也可以在构造函数中定义变量,这是一种方法。

代码:

public function __construct(){
$this->variable = "cool"; 
}
public function index() {

    $home_data['username']  = "myname";
            $home_data['cool'] = $this->variable;

    $this->load->view('home_view', $home_data);
}