
Pharallelフレームワークの動きについて
フレームワークの動き についてメモです。

■画面表示処理
①http://192.168.0.105:8080/form を表示する。
②この時にinitメソッドが呼び出される。
initメソッド内で no,title,name の値を form_data に設定している。
例えば前の画面からnoを持ってくる場合には、
http://192.168.0.105:8080/form?no=888
とすると、
initメソッド内でリクエストの値をページデータに渡せます。
public function init( FormData $form_data, Request $request )
{
$form_data['no'] = $requst->no;
// (例)
$form_data->title = 'しょきたいとる';
$form_data['name'] = 'なまえ';
$form_data->no = $request->no;
}
※initが呼び出される条件
・初めて画面を表示する場合。
・URLにinit=1がある場合。
↑例えば入力画面→確認画面→入力画面に戻ってきたとき、入力した内容をフォームに設定するパターンがありますが、
(backメソッドを使って)initメソッドを通らなようにすると自動的に以前入力した内容が入ります。
return $this->back("入力画面");
③initメソッドの後、create メソッドが呼び出され、テンプレートが表示されます。
public function create( FormData $form_data )
{
//普通
return view('order_manage',['form_data'=>$form_data]);
//↓
//viewメソッドを使うとテンプレート名を省略できます。
return $this->view(['form_data'=>$form_data]);
//テンプレートにパラメータを設定するのは通常は↓ですけど
$params = ['title' => '受注伝票管理'];
return $this->view($params);
//↓
//下記の方法でもテンプレートにパラメータを設定できます。
$this->title = '受注伝票管理';
return $this->view();
}
④テンプレートで設定した値の表示。
//通常のララベル
<input type="text" name="name" value="{{ old('name') }}">
通常は {{ old(‘no’) }} でテンプレートに渡した値を表示しますが、
{{ $form_data[‘no’] }} のように書くようにします。
// form_dataから取得
<input type="text" name="name" value="{{ $form_data['name'] }}">
// form_dataの変数は普通の変数としてもアクセス可能。
<input type="text" name="name" value="{{ $name }}">
★少し整理
$this->○○○ と $form_data[‘○○○’] で画面の変数を設定する方法がでてきました。
この2つの使い分けは
・$this->○○○ は画面表示時に使用する変数を設定します。
・$form_data[‘○○○’] はフォームの値を設定する時に使用します。
■ボタン処理
<!-- ①サブミットするボタンを作成します。 -->
<input type="submit" name="ok1" value="ok1">
// ②この場合コントローラーにon_ok1メソッドを用意しておけば自動で呼び出されます。
public function on_ok1( $request )
{
echo 'ok1';
//ここで入力チェック。
//データベースに入れる等の処理。
//次画面を表示する場合は下記のどれかを指定すればOK。
return $this->reload(); //元の画面表示
return $this->back("前の画面のルート名"); //戻るボタン
return $this->forward("次の画面のルート名"); //次画面表示
return $this->init_forward("次の画面のルート名"); //次画面はinitを呼び出す。
}
以上