我需要在传递参数时从标签中调用控制器中的方法,这里是代码。当我点击链接时我需要在模型中调用该函数,
**controller**
public function company_details($id){
$this->load->view('view_header');
$this->load->view('view_nav');
$this->load->model('company_detail_model');
$data['company_result'] = $this->load->company_detail_model->getRecords();
$this->load->view('company_details',$data);
$this->load->view('view_footer');
}
模型
class Company_detail_model extends CI_Model{
function getRecords()
{
$this->load->database();
$q = $this->db->get("companydetails");
if($q->num_rows() > 0)
{
return $q->result();
}
return array();
}
}
查看
<label for="folder1"><a href="<?php echo site_url('site2/company_details'.$row->id); ?>"><?=$row->name?></label></a>
我需要以这样的文本输入形式显示这些数据,
<?php echo form_open_multipart('site/upload');?>
<label>Code : </label> <?php echo form_input('code');?><br/><br/>
<label>Name : </label> <?php echo form_input('name');?><br/><br/>
<label>Logo : </label><input type="file" name="userfile"/><br/><br/>
<label>URL : </label> <?php echo form_input('url');?><br/><br/>
<label>Description : </label> <textarea name="description" rows="4" cols="50"></textarea><br/><br/>
<input type="submit" name="submit" value="Save"/>
</form>
答案 0 :(得分:2)
您需要学习 Codeigniter 的基础知识。
尝试以下代码
**controller**
public function company_details($id){
$this->load->view('view_header');
$this->load->view('view_nav');
$this->load->model('company_detail_model');
$data['company_result'] =$this->company_detail_model->getRecords();
$this->load->view('company_details',$data);
$this->load->view('view_footer');
}
您需要将$this->load->company_detail_model->getRecords();
更改为$this->company_detail_model->getRecords();
编辑:
您的模型功能如下所示:
function getRecords()
{
$this->load->database();
$query = $this->db->get("companydetails");
return $query->result_array();
}
result_array()
方法以数组形式重新生成结果。
答案 1 :(得分:1)
在模型调用加载后(不再加载)修复模型调用:
$data['company_result'] = $this->company_detail_model->getRecords();
修复锚链接(你错过了斜杠)和HTML结构(嵌套错误):
<label for="folder1">
<a href="<?php echo site_url('site2/company_details/'.$row->id); ?>">
<?=$row->name?>
</a>
</label>
这并没有破坏任何东西,但通常在控制器方法调用结束时加载视图。理想情况下,该方法应如下所示:
public function company_details($id){
$this->load->model('company_detail_model');
$data['company_result'] = $this->company_detail_model->getRecords();
$this->load->view('view_header');
$this->load->view('view_nav');
$this->load->view('company_details',$data);
$this->load->view('view_footer');
}
您的模型方法也可以针对以下内容进行优化:
function getRecords()
{
$this->load->database();
return $this->db->get("companydetails")->result();
}
最后,对数据库等常见内容使用自动加载可能是个好主意。
答案 2 :(得分:0)
调用模型方法
时无需添加load
请更改
$this->load->company_detail_model->getRecords();
到
$this->company_detail_model->getRecords();
在模型中,使用$this->load->library
加载database
库
function getRecords()
{
$this->load->library("database");
$q = $this->db->get("companydetails");
if($q->num_rows() > 0)
{
return $q->result();
}
return array();
}
答案 3 :(得分:-1)
所以,如果你想这样做,
在你的控制器中:
public function company_details($id){
//load model
$this->load->model('company_detail_model');
//get back your data
$data['company_result'] = $this->company_detail_model->getRecords();
$this->load->view('view_header');
$this->load->view('view_nav');
$this->load->view('company_details',$data);
$this->load->view('view_footer');
}
在你的模特中:
class Company_detail_model extends CI_Model{
public function __construct(){
parent::__construct();
$this->load->database();
}
public function getRecords()
{
$query = $this->db->get("companydetails");
return $query->result();
}
}
在你看来
<!-- we check if $company_result is not empty instead of control in model -->
<php? if($company_result!= FALSE): ?>
<label for="folder1">
<!--+
|note, we read the value id from $company_result because you pass this
|varible in your controller with $data['company_result']
+-->
<a href="<?php echo site_url('site2/company_details'.$company_result->id); ?>">
<?=$company_result->name?>
</a>
</label>
<?php endif; ?>
如果您想使用参数获取特定页面 你必须在你的控制器或其他方法 添加一个控件,如:
public function company_details($id = null){
//load model
$this->load->model('company_detail_model');
$this->load->view('view_header');
$this->load->view('view_nav');
if($id != null && is_numeric($id)){
//get back your specific data in another wiew
//make your custom method
$data['company_result'] = $this->company_detail_model->getRecordsByID($id);
//load your specific view
$this->load->view('company_details_wiew',$data);
}else{
//get back your data
$data['company_result'] = $this->company_detail_model->getRecords();
$this->load->view('company_details',$data);
}
$this->load->view('view_footer');
}
和模型
public function getRecordsByID($id)
{
$this->db->where("id",$id);
$query = $this->db->get("companydetails");
return $query->result();
}
我希望它可以帮助你:)。