fuelPHP コントローラーへの値の渡し方
- 評価
- クリップ 0
- VIEW 4,467
https://teratail.com/questions/14437とのことですが、
現在fuelPHPを扱っています。
とりあえず練習なのでコントローラーからビューを呼び出しています。
*コントローラー側
<?php
class Controller_Login extends Controller {
public function action_index() {
$view = Response::forge(View::forge('login'));
return $view;
}
}
*ビュー側
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello world</title>
</head>
<body>
<p>ログイン画面から</p>
<form action="" method="get">
<table>
<tbody>
<tr>
<td>
メールアドレス
</td>
<td>
<input type="text" name="mail" value="<?= filter_input(INPUT_GET,'mail') ?>">
</td>
</tr>
<tr>
<td>
パスワード
</td>
<td>
<input type="text" name="pass" value="<?= filter_input(INPUT_GET,'pass') ?>">
</td>
</tr>
</tbody>
</table>
<input type="submit" name="submit" value="送信">
</form>
</body>
</html>
コントローラーからビューに値を渡す方法はわかります。
しかし、ビュー側のフォームに入力された文字列などをコントローラでごにょごにょしたいと思い調べていたら冒頭のURLにたどり着きました。
入力値をDBに登録したい場合、
流れ的に
ビュー
↓
コントローラー
↓
モデル
を通るはずです。
こういう場合どうすればいいのでしょうか?
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
ビュー側のフォームに入力された文字列などをコントローラでごにょごにょしたい
FuelPhpでは Inputクラス が用意されています。
簡単な例ではありますが、コントローラーでは、以下のようにフォームで入力された文字列を取得することができます。
<?php
class Controller_Login extends Controller {
public function action_index() {
// GETリクエストの場合
if (Input::method() == 'GET') {
$view = Response::forge(View::forge('login'));
return $view;
}
// POSTリクエストの場合
if (Input::method() == 'POST') {
// HTMLのinputタグのname属性の値を引数で指定
$email = Input::post('mail');
$password = Input::post('pass');
・
・
・
}
}
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
違います。
MVCモデルの場合、webブラウザなどからのパラメータを受信して全体の動作をコントロールするのがコントローラー、
データベースなどにデータを格納したり集計したりするのがモデル、
結果webブラウザなどへ応答するのがビュー、
となっています。
コントローラーの中で、ビューで応答結果として返す部分の変動箇所をすべて調整して用意した上で、
コントローラーからビューに必要なすべての情報を引き渡して、
ビューで使います。
例:ビューでtitle要素を書き換えたい
→コントローラーから与えるデータにtitle要素に詰めたい文字列を用意して引き渡す。
class Controller_Home extends Controller
{
public function action_index()
{
$data = array(); // ビューに渡す変数を格納
$data['page_title'] = 'ほげほげ';
// ブラウザに出力するビューを割り当てる
return View::forge('home/index', $data);
}
}
<html>
<head>
<title><?php echo $page_title; ?></title>
</head>
<body>
<p>てすと</p>
</body>
</html>
ついでにいうと、データベースへのアクセスはモデルの役割ですが、
データベース上のtable(やview)と一対一でモデルを作る場合もありますし、
一つのアクションに紐づく複数の関連テーブルにアクセスするモデルを作る場合もあります。
また、ビューの中では、直接GET/POSTなどされたデータにはアクセスしません。
コントローラーで受信したパラメータを検証して問題がない場合に、
ビューに引き渡すための連想配列などに格納して、
ビューのインスタンスを生成する際に引き渡します。
なお、私もFuelPHPの初歩の初歩がわからなかった人間なので、
作法(?)がわからないのもよくわかります。
電子書籍ですが、こちらの本はすごく順序立ててわかりやすかったので、
おすすめさせていただいております。(著者から紹介されてなるほどと。)
はじめてのフレームワークとしてのFuelPHP第2版(1) 環境構築編 - 達人出版会
(ちなみに3分冊。)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる