![](/img/trans.png)
[英]In Codeigniter 2, how do I load a library into a global variable I can use in helper functions?
[英]Do I use a helper, library or place my datepicker code in a model in codeigniter?
這是我的代碼:
//Setup days
$data['days']['FALSE'] = 'Day';
//Setup months
$data['months'] = array('FALSE' => 'Month',
'1' => 'Jan',
'2' => 'Feb',
'3' => 'Mar',
'4' => 'Apr',
'5' => 'May',
'6' => 'Jun',
'7' => 'Jul',
'8' => 'Aug',
'9' => 'Sep',
'10' => 'Oct',
'11' => 'Nov',
'12' => 'Dec'
);
for($i=1;$i<=31;$i++){
$data['days'][$i] = $i;
}
//Setup years
$start_year = date("Y",mktime(0,0,0,date("m"),date("d"),date("Y")-100)); //Adjust 100 to however many year back you want
$data['years']['FALSE'] = 'Year';
for ($i=$start_year;$i<=date("Y");++$i) {
$data['years'][$i] = $i;
}
這是我的if語句:
if($this->form_validation->run()){
$month = $this->input->post('months');
$day = $this->input->post('days');
$year = $this->input->post('years');
$birthday = date("m-d-Y H:i:s",mktime(0,0,0,$month,$day,$year));
}
這是視圖中表單中的相應代碼:
<p>
<label for="birthday">Birthday: </label>
<?php echo form_dropdown('days',$days). " " . form_dropdown('months',$months). " " . form_dropdown('years',$years); ?>
</p>
當我將datepicker代碼直接放在控制器中時,表單上的下拉列表會正確顯示。 我想對代碼進行整理,因此決定創建模型並嘗試從控制器進行調用,但是當我的視圖嘗試顯示表單時,幾次出現未定義的變量錯誤。
我已經進行了一些研究,並且想知道將datepicker用作助手“ datepicker_helper.php”是否更好,將代碼放入其中並將其加載到控制器中。
這是最好的方法嗎?
如果可以的話,有人可以給我一個如何做到這一點的例子嗎? 如果還有其他方法可以請別人告訴我?
在此先感謝..我在這里學習..
許多開發人員(包括我本人在內)已經開發了自己的代碼版本。 我想在這里指出兩個問題。
首先,您在這里使自己陷入一種虛假的安全感。 有界的選擇元素不能也不保證每個請求都包含一個有效日期。 永遠不要相信輸入。 始終驗證。 用您自己的日期驗證功能擴展Form_validation類。
其次,讓用戶下拉三個下拉菜單(沒有減輕所有請求中的有效日期的保證)是非常糟糕的UX,尤其是在用戶需要填充多個日期(開始日期/結束日期,里程碑日期等)的情況下。
在理解了這兩件事之后,我將其重構到我的網站之外。 現在,我的日期字段是輸入類型的文本,帶有指定日期期望格式的標簽。 我的Form_validation類已擴展為驗證日期字段。 而且我在表單中添加了一個真正的日期選擇器 。
在一個旁注中,我對可以在多個框架,應用程序或位置中使用的此類通用代碼進行的操作如下:
在這種情況下,您的form_dropdown
將只是上述文件中的靜態函數:
class My_Utils {
public static function form_dropdown($param1, $param2) {
}
}
您將使用它:
echo My_Utils::form_dropdown('days',$days)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.