【发布时间】:2012-11-28 14:15:53
【问题描述】:
为什么这段代码没问题
$this->sch_teacher_id = $this->ion_auth->user_by_username("vika")->row()->id;
但这不起作用?
$this->sch_teacher_id = $this->ion_auth->user_by_username($this->uri->segment(3))->row()->id;
我的网址是 domain:8888/admin_schedule/teacher/vika
route.php 包含
$route['admin_schedule/teacher/(:any)'] = "admin_schedule/index/$1";
我在函数__construct()中使用了代码行,它的结果在另一个控制器函数中使用,因为3个函数使用了这个结果。如果我在其中一个函数中移动这段代码并使用 $this->uri->segment(3) 那么我得到的不是“vika 的课程,而是 我自己的课程,所以
public function user_by_username($username = FALSE)
{
$this->trigger_events('user');
//if no id was passed use the current users id
$username || $username = $this->session->userdata('username');
$this->limit(1);
$this->where($this->tables['users'].'.username', $username);
$this->users();
return $this;
}
效果很好。但是 $this->uri->segment(3) 如果在 user_by_username 函数中使用它作为参数,则不起作用!
下一个方式生成的页面: 控制器 admin_schedule 具有渲染视图 index.php 的函数 index。 在那个视图中,我使用 javascript,从 admin_schedule controller = get_schedule_db_recurring_events_on_daysweek 调用另一个函数:
...
{
url: '/admin_schedule/get_schedule_db_recurring_events_on_daysweek/',//"<?echo $data_path?>",
backgroundColor: 'red',
}
在控制器中
function get_schedule_db_recurring_events_on_daysweek()
{
$start = date('Y-m-d H:i', $this->input->get('start'));
$end = date('Y-m-d H:i', $this->input->get('end'));
$sch_teacher_id = $this->uri->segment(3); // <--- this doesn't work, but $sch_teacher_id = 111 works perfectly
$result=$this->Schedule_model->get_schedule_recurring_events_on_daysweek($start, $end, $sch_teacher_id);
$count=count($result);
if($count>0){
echo json_encode($result);
}
}
请帮助理解这个问题。
【问题讨论】:
-
您是否尝试将其分配给一个变量并回显它以查看发生了什么?
-
是的,当然:$username1 = "'".$this->uri->segment(3)."'"; print_r($username1);这应该打印“vika”。
-
如果是这样,您的最后一个问题已经得到解答。这给我们留下了主要问题。您是否尝试过使用变量而不是直接将值传递给方法(看起来很奇怪,但在某些情况下会导致引用问题)。试一试。
-
在变量 $username1 = "vika" 中传递值 'vika';给出了很好的结果,是的。如果我使用 $this->uri->segment(3),就会出现问题。我尝试使用 rsegment 代替 segment,但没有帮助。
-
如果您解决了您的问题,请将解决方案作为答案发布,以便对其他人有所帮助。
标签: codeigniter url-routing codeigniter-2 codeigniter-routing