我想将$data
从名为poll
的控制器传递给results_view
但是我收到一个未定义的变量错误。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Poll extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('form');
}
public function index()
{
$this->load->view('poll_view',$data);
}
public function vote()
{
echo "Voting Successfull";
$this->db->insert('votes',$_POST);
}
public function results()
{
echo "These are the results";
//$query = $this->db->get('votes');
$data = "hello";
$this->load->view('results_view', $data);
}
}
Results_view.php
<html>
<?php echo $data; ?>
</html>
答案 0 :(得分:43)
$data
应该是数组或对象:http://codeigniter.com/user_guide/general/views.html
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('results_view', $data);
<强> results_view.php 强>
<html>
<?php
//Access them like so
echo $title.$heading.$message; ?>
</html>
答案 1 :(得分:14)
简单来说,
控制器中的$ data ['a']在您的视图中变为$ a。 (您的视图中不会存在$ data,只有索引可用)e.g。
Controller:
$data['hello']='hellow world';
view:
echo $hello;
答案 2 :(得分:6)
视图不会调用数据'数据'
控制器将包含一个关联索引(不确定这是否是正确的命名法),因为数据,例如'stuff',因此$data['stuff']
您在视图中echo
:echo $stuff;
而非echo $data;
我是一个低级代码小提琴手,但我真的很喜欢CodeIgniter,请原谅我,如果我有这个关于山雀的屁股。
还有一件事 - 肯定你的构造函数有点浪费。所有加载库和助手都是使用自动加载文件完成的。
答案 3 :(得分:3)
您可以创建属性$data = []
;在CI_Controller(path:system / core / Controller.php)内部并存储所有数据以在视图中显示。 U可以在CI_Controller中加载通用数据,如语言,菜单等。您也可以添加特殊数据以在控制器中查看。 (例如:$this->data['message'] = "Hello world";
)
最后,您可以在加载视图时传递$this->data
进行查看(例如:$this->load->view('view_name',$this->data);
)
希望这对您有帮助
答案 4 :(得分:2)
你可以这样做
在控制器
中定义了数组$data['hello'] = "hello";
并将变量传递给查看
echo $hello;
答案 5 :(得分:1)
在您的控制器中,您可以传递
''
在您看来,您可以致电
$data['poll'] = "Your results";
答案 6 :(得分:1)
好的,所以我终于解决了。你应该有一个模型(它有很多帮助)
在您的模型中执行类似
的操作<强>模型强>
class poll_model extends CI_MODEL {
function __construct() {
$this-load->database();
}
function get_poll {
$this->db->query("SELECT * FROM table");
$row = $query->row();
$obj = array(
'id' => $row->id
);
return $obj;
}
}
现在,如果你有一个以上的身份说出民意调查名称,你可以添加数组。 现在在控制器中执行
class Poll extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('form');
$this->load->model('poll_model');
}
public function index()
{
$data["a"] = $this->poll_model->get_poll();
$this->load->view('poll_view',$data);
}
最后在 VIEW put
<? echo $a["id"]; ?>
这是一个很大的帮助。我通过测试得出结论,它对我有用。
答案 7 :(得分:1)
在控制器中:
$data["result"] = $this->login_model->get_login(); // Get array value from DB..
$this->load->view('login-form',$data); // Pass the array to view
在视图中:
print_r($result); // print the array in view file
答案 8 :(得分:0)
我已经看到了上述所有答案,所以当我必须将数据从控制器加载到我的视图时,这就是我所做的。 将数据传递到控制器的视图:
public function your_controller(){
// Your Necessary Code
// You have the $data, $data2, $data3 to post to the view.
$this->load->view('your_view_directory or view_page',['data'=>$data, 'data2'=>$data2, 'data3'=>$data3... so on ]);
}
在View Side您只需检索该数据:
要显示您只需使用echo
,print
,print_r
即可。如果你想循环它,你也可以这样做。
答案 9 :(得分:0)
在控制器中:
公共职能产品(){
$data = array("title" => "Books", "status"=>"Read","author":"arshad","company":"3esofttech",
“主题”:“计算机科学”);
从模型到控制器的数据
$this->load->model('bookModel');
$result = $this->bookModel->getMoreDetailsOfBook();
**Add *$result* from model to *$data* array**
$data['tableRows'] = $result;
从控制器到视图的$ data
$this->load->view('admin/head',$data);
并在视图文件中访问 视图/ user.php的
<?php echo $data;
foreach($tableRows as $row){ echo
$row['startData']; } ?>
答案 10 :(得分:0)
代替
$data = "hello";
$this->load->view('results_view', $data);
做
$data['hello'] = 'hello';
$this->load->view('results_view', $data);
在您的控制器文件中,控制器会将具有 hello 作为 string 的数据发送到results_view,在您的视图文件中,您可以通过< / p>
echo $hello;
答案 11 :(得分:0)
如果通过
$data = your code
$this->load->view('your-page', $data);
并以
获取视图数据<?php echo $data;?>
这是行不通的,因为ci无法理解这种模式。如果想通过值表单控制器进行查看,可以尝试一下-
控制器-
$data['any-name'] = your values;
$this->load->view('your-page', $data);
然后在您的视图中,您可以通过-
获取此数据<?php echo $any-name;?>
希望这对您有所帮助。