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

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

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

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

FuelPHP

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

Q&A

解決済

2回答

6850閲覧

fuelPHP コントローラーへの値の渡し方

earnest_gay

総合スコア615

PHP

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

FuelPHP

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

0グッド

0クリップ

投稿2017/01/31 04:43

編集2017/01/31 04:46

https://teratail.com/questions/14437とのことですが、

現在fuelPHPを扱っています。

とりあえず練習なのでコントローラーからビューを呼び出しています。

*コントローラー側

php

1<?php 2class Controller_Login extends Controller { 3 4 public function action_index() { 5 6 $view = Response::forge(View::forge('login')); 7 return $view; 8 9 } 10}

*ビュー側

php

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <title>Hello world</title> 6</head> 7<body> 8 <p>ログイン画面から</p> 9 <form action="" method="get"> 10 <table> 11 <tbody> 12 <tr> 13 <td> 14 メールアドレス 15 </td> 16 <td> 17 <input type="text" name="mail" value="<?= filter_input(INPUT_GET,'mail') ?>"> 18 </td> 19 </tr> 20 <tr> 21 <td> 22 パスワード 23 </td> 24 <td> 25 <input type="text" name="pass" value="<?= filter_input(INPUT_GET,'pass') ?>"> 26 </td> 27 </tr> 28 29 </tbody> 30 </table> 31 <input type="submit" name="submit" value="送信"> 32 </form> 33</body> 34</html> 35

コントローラーからビューに値を渡す方法はわかります。
しかし、ビュー側のフォームに入力された文字列などをコントローラでごにょごにょしたいと思い調べていたら冒頭のURLにたどり着きました。

入力値をDBに登録したい場合、
流れ的に
ビュー

コントローラー

モデル
を通るはずです。

こういう場合どうすればいいのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

ビュー側のフォームに入力された文字列などをコントローラでごにょごにょしたい

FuelPhpでは Inputクラス が用意されています。
簡単な例ではありますが、コントローラーでは、以下のようにフォームで入力された文字列を取得することができます。

PHP

1<?php 2class Controller_Login extends Controller { 3 4 public function action_index() { 5 // GETリクエストの場合 6 if (Input::method() == 'GET') { 7 $view = Response::forge(View::forge('login')); 8 return $view; 9 } 10 11 // POSTリクエストの場合 12 if (Input::method() == 'POST') { 13 // HTMLのinputタグのname属性の値を引数で指定 14 $email = Input::post('mail'); 15 $password = Input::post('pass'); 16171819 } 20 } 21}

投稿2017/02/02 08:28

xenbeat

総合スコア4258

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

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

0

違います。
MVCモデルの場合、webブラウザなどからのパラメータを受信して全体の動作をコントロールするのがコントローラー、
データベースなどにデータを格納したり集計したりするのがモデル、
結果webブラウザなどへ応答するのがビュー、
となっています。

コントローラーの中で、ビューで応答結果として返す部分の変動箇所をすべて調整して用意した上で、
コントローラーからビューに必要なすべての情報を引き渡して、
ビューで使います。

例:ビューでtitle要素を書き換えたい
→コントローラーから与えるデータにtitle要素に詰めたい文字列を用意して引き渡す。

php

1class Controller_Home extends Controller 2{ 3 public function action_index() 4 { 5 $data = array(); // ビューに渡す変数を格納 6 7 $data['page_title'] = 'ほげほげ'; 8 9 // ブラウザに出力するビューを割り当てる 10 return View::forge('home/index', $data); 11 } 12}

php

1<html> 2 <head> 3 <title><?php echo $page_title; ?></title> 4 </head> 5 <body> 6 <p>てすと</p> 7 </body> 8</html>

ついでにいうと、データベースへのアクセスはモデルの役割ですが、
データベース上のtable(やview)と一対一でモデルを作る場合もありますし、
一つのアクションに紐づく複数の関連テーブルにアクセスするモデルを作る場合もあります。

また、ビューの中では、直接GET/POSTなどされたデータにはアクセスしません。
コントローラーで受信したパラメータを検証して問題がない場合に、
ビューに引き渡すための連想配列などに格納して、
ビューのインスタンスを生成する際に引き渡します。

参考:ビュー - 概要 - FuelPHP ドキュメント


なお、私もFuelPHPの初歩の初歩がわからなかった人間なので、
作法(?)がわからないのもよくわかります。
電子書籍ですが、こちらの本はすごく順序立ててわかりやすかったので、
おすすめさせていただいております。(著者から紹介されてなるほどと。)

はじめてのフレームワークとしてのFuelPHP第2版(1) 環境構築編 - 達人出版会
(ちなみに3分冊。)

投稿2017/01/31 07:08

編集2017/01/31 07:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

msx2

2017/02/02 15:25

きっとrentoさんはビュー(フォーム)から送信された値をコントローラーで受け取る方法を知りたいんだと思いますよ。Inputクラスを使えばできますね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問