0

使用這個 - > URI->段(3)價值?笨不能在功能

$this->sch_teacher_id = $this->ion_auth->user_by_username($this->uri->segment(3))->row()->id; 

我的網址域名:8888/admin_schedule /教師/ VIKA

route.php包含

$route['admin_schedule/teacher/(:any)'] = "admin_schedule/index/$1"; 

我使用的代碼行功能__construct(),和結果它在另一個控制器功能中使用,因爲3個功能使用此結果。如果我在這個功能中的一個移動這個代碼,並使用$這個 - > URI->段(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的函數索引。 並在該視圖中使用JavaScript,調用另一個函數從admin_schedule控制器= 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); 
     } 
    } 

請,有助於理解這個問題。

+0

您是否嘗試將其分配給一個變量並回顯以查看發生了什麼? – rcdmk

+0

是的,當然是:$ username1 =「'」。$ this-> uri-> segment(3)。「'」; \t \t print_r($ username1);這張照片應該是'vika'。 – almix

+0

如果是這樣,您的最後一個問題已經得到解答。這給我們留下了主要問題。你有沒有試圖將這個值與一個變量而不是直接傳遞給該方法(看起來很奇怪,但在某些情況下會引起一些引用問題)。試試吧。 – rcdmk

回答

0

我不記得原因 - 它只是你學會接受的CI怪癖 - 你不能直接使用$ this-> uri-> segment(3)等作爲參數,你需要指定它然後通過@almix爲他的完整性測試進行傳遞。

至少我也一直有麻煩直接用它作爲參數 - 我會很高興任何人糾正我!

+0

不,布賴恩,將它分配給參數不起作用。 $ sch_teacher_id = 111; // $ this-> uri-> segment(3); \t \t $ result = $ this-> Schedule_model-> get_schedule_recurring_events_on_daysweek($ start,$ end,$ sch_teacher_id);作品,但$ sch_teacher_id = $ this-> uri-> segment(3);不! – almix

+0

你的意思是:$ username1 = $ this-> uri-> segment(3);那麼使用$ username1 does not工作? – Brian

+0

嗯,確定http://ellislab.com/codeigniter/user-guide/libraries/uri.html指出,如果找不到該項目,它將返回'false'。 – Brian

0

我解決了我的問題!

認爲由於ajax調用而出現問題。所以,當我在控制器代碼

function __construct() 
{ 
     parent::__construct(); 
     ... 

     $this->sch_teacher_row = $this->ion_auth->user_by_username($this->uri->segment(3))->row(); 
     $this->data['sch_teacher_id'] = $this->sch_teacher_row->id; 
     $this->data['subtitle'] = $this->sch_teacher_row->username;   
} 

接下來我有正確的價值(「VIKA」),或者更精確地說VIKA的ID(「911」)在視圖文件但不是在我的控制器的其他功能。但我可以從現在視圖(sch_teacher_id)將該值傳遞給該控制器使用jQuery $就選擇數據

eventSources: [ 
...   
{ 
       url: '/admin_schedule/get_schedule_db_recurring_events_on_daysweek/',//"<?echo $data_path?>", 
       type: 'GET', 
       data: {sch_teacher_id: sch_teacher_id}, 
       backgroundColor: 'red', 
      } 
     ], 

和next(在山的另一邊)抓住這個GET參數,而且踢它的模型功能:

function get_schedule_db_recurring_events_on_daysweek() 
    { 
     ... 
     $sch_teacher_id_from_view = $this->input->get('sch_teacher_id'); 
     $result=$this->Schedule_model->get_schedule_recurring_events_on_daysweek($start, $end, $sch_teacher_id_from_view); 
     ... 
    } 

而這一切都是霹靂舞。

+0

這與我們的建議相同,然後分配它交上來。 – Brian