質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

1回答

3124閲覧

FuelPHPのモデルにおける入力とセッションの問題(PHP)

maimaisuki

総合スコア18

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2014/09/07 10:40

InputをModelの配下に置くと、以下のエラーが出てしまいます。
・・・・・・・・・・・・・・・・・・・・

lang

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

・・・・・・・・・・・・・・・・・・・・

Sessionを試すときも、同じことです。
・・・・・・・・・・・・・・・・・・・・

lang

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

・・・・・・・・・・・・・・・・・・・・

値をハードコードしようとするとき、それはインサートせずエラーなしにクエリーをデバッグします。

そして、そのハードコードした結果の値をパスしようとすると値がポストされていることは示されますが、
データベースでそれをインサートしません。

コードは以下のとおりです。
・・・・・・・・・・・・・・・・・・・・

lang

1namespace Model; 2use DB; 3 4class Event extends \Model { 5 6 static function send_event() 7 { 8 $query = DB::insert('events'); 9 10 $query->set(array( 11 'user_id' => Session::get('hoge_user'), 12 'event_name' => Input::post('event_name'), 13 'event_desc' => Input::post('event_desc'), 14 'event_start' => Input::post('event_start'), 15 'event_end' => Input::post('event_end'), 16 )); 17 } 18}

・・・・・・・・・・・・・・・・・・・・

コントローラは以下です。
・・・・・・・・・・・・・・・・・・・・

lang

1function action_send_data() 2{ 3 $response = Response::forge(); 4 $vali = Validation::forge('events'); 5 6 $vali->add_field('event_name', 'イベント名', 'required'); 7 $vali->add_field('event_desc', 'イベント説明', 'required'); 8 $vali->add_field('event_start', 'イベント開始', 'required'); 9 $vali->add_field('event_end', 'イベント終了', 'required'); 10 11 Event::send_event(); 12 $response->body(json_encode(array( 13 'status' => 'ok', 14 ))); 15 16 return $response; 17}

・・・・・・・・・・・・・・・・・・・・

どこが間違っているのか、どなたか教えていただけないでしょうか?
よろしくお願いします。

追記:コントローラにおいては、クエリーデバッグをする際に検証を取り除きました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ファイルの最初でネームスペースを宣言するとき、namespace Model;を処理したことになっていると思います。

これは、ネームスペースが明確に定義されていないところでは全てのクラスにネームスペースを宣言してしまいます。

例えばSessionへの呼び出しは、\Fuel\Core\Sessionの中のModel\Sessionにおいて見られます。

これを回避するには、2つの方法があリます。

まず、use DB;です。

これにより、あなたのコードで既に使われているようにネームスペース内のクラスを探すことができます。
もう一つのやり方は、明確なネームスペースをもつクラスを呼び出すことです。

例えば:
\Fuel\Core\Session::get();

Fuelは便宜上、全てのコアクラスをルートネームスペースへエイリアスします。

これが意味するところは、あなたが直接 \ を使用するだけで、
\Fuel\Coreにおける全てのクラスを呼び出すことが出来るということです。

\Session::get();

投稿2014/09/08 02:30

raou

総合スコア463

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問