2012-08-17 45 views
0

我遇到了一個問題,我無法真正解決(我是一個begginer與fuelphp)。Fuelphp輸入和模型中的會話問題

所以,當我在我的模型將輸入我得到這個錯誤

ErrorException [ Error ]: Class 'Model\Input' not found 

當我與會話的同樣的事情

ErrorException [ Error ]: Class 'Model\Session' not found 

並嘗試當我嘗試在它硬編碼值,其不插入,查詢沒有錯誤。它顯示值被張貼(當傳遞硬代碼值時)但不將其插入到數據庫中。

我的代碼

模型

namespace Model; 
use DB; 

    class Event extends \Model { 

     static function send_event() 
     { 
      $query = DB::insert('events'); 

      $query->set(array(
       'user_id' => Session::get('sentry_user'), 
       'event_name' => Input::post('event_name'), 
       'event_desc' => Input::post('event_desc'), 
       'event_start' => Input::post('event_start'), 
       'event_end' => Input::post('event_end'), 
      )); 
     } 

} 

控制器

function action_send_data() 
{ 
    $response = Response::forge(); 
    $val = Validation::forge('events'); 

    $val->add_field('event_name', 'Esemény neve', 'required'); 
    $val->add_field('event_desc', 'Esemény leírás', 'required'); 
    $val->add_field('event_start', 'Esemény kezdődik', 'required'); 
    $val->add_field('event_end', 'Esemény kejár', 'required'); 


    Event::send_event(); 
    $response->body(json_encode(array(
     'status' => 'ok', 
    ))); 


    return $response; 
} 

可以請人給我一個提示我在做什麼錯?

謝謝

PS:在控制器我刪除查詢調試運行

回答

5

當你聲明在文件的頂部的命名空間驗證,你有

namespace Model; 

做的這爲名稱空間未明確定義的所有類聲明名稱空間。例如,您對Session的呼叫實際上在Model\Session中,實際上它存在於\Fuel\Core\Session

有兩種解決方法。你已經通過調用use語言結構在你的問題中演示了一個例子。

use DB; 

這會導致PHP搜索此名稱空間中的類以及正在使用的類(本例中爲Model)。

另一種方法是通過顯式名稱空間調用類。例如

\Fuel\Core\Session::get(); 

爲了方便起見,Fuel還將所有核心類別都別名到根名稱空間。這意味着你只需使用\就可以直接致電\Fuel\Core。例如

\Session::get(); 
+0

第一遺憾的緩慢回覆,感謝您指出了這一點,並感謝這麼多的解釋,你幫助了很多 – Side 2012-08-21 10:39:37

+0

不要「永遠」用\燃油\核心的命名空間。這是一個內部框架名稱空間。如果你這樣做,那麼你繞過別名系統,這意味着核心類擴展不再起作用。 – WanWizard 2012-09-03 12:10:39

+0

@WanWizard,如果您希望在原件更換後使用原件,仍然可以完成。它甚至記錄在[這裏](http://docs.fuelphp.com/general/extending_core.html#/extend_and_replace)。這可能不是好的做法,但它仍然是一個合理的用例。 – 2012-09-03 12:14:10