2013.
06.
23
23:39:06
FuelPHPにはViewModelなる「view用のmodelだぜー」な奴がいるらしい。
そいつを見ていこうってのが今回のテーマです。
えっとまず基本的な使い方は……
1.ファイルは「fuel/app/classes/view/」に置く。
2.「ViewModel」を継承したクラスにする。
3.(取りあえずは)「view()」メソッドを用意する。
4.対応させるview(fuel/app/view/配下のファイル)と同じ階層で同じファイル名にする。
ってところですかね。
試しに作ったのはこんな感じφ(--)
■fuel/app/classes/view/vhoge.php
■fuel/app/view/vhoge.php
■fuel/app/classes/controller/hogev.php
結果φ(--)
ViewModelで$msgに値を設定してその$msgをビューで表示、
そんなViewModelをコントローラから呼び出しています。
ViewModelで別のメソッドを定義して使いたい場合は
呼出側で第二引数に呼び出しメソッド名を指定すれば良いらしいφ(--)
■fuel/app/classes/view/vhoge.php
■fuel/app/classes/controller/hogev.php
結果φ(--)
コントローラからViewModelに値を渡したい場合は、
「set()」メソッドもしくは「set_global()」メソッドを使えば良いらしいφ(--)
■fuel/app/classes/view/vhoge.php
■fuel/app/classes/controller/hogev.php
結果φ(--)
ふーん、特に難しいことは無さそうですね。
使いどころもいまいち思い浮かばんけど(--ゞ
取りあえずViewModelの理解、完了\(--)/
そいつを見ていこうってのが今回のテーマです。
えっとまず基本的な使い方は……
1.ファイルは「fuel/app/classes/view/」に置く。
2.「ViewModel」を継承したクラスにする。
3.(取りあえずは)「view()」メソッドを用意する。
4.対応させるview(fuel/app/view/配下のファイル)と同じ階層で同じファイル名にする。
ってところですかね。
試しに作ったのはこんな感じφ(--)
■fuel/app/classes/view/vhoge.php
<?php
class View_vhoge extends ViewModel
{
public function view()
{
$this->msg = "あああ";
}
}
class View_vhoge extends ViewModel
{
public function view()
{
$this->msg = "あああ";
}
}
■fuel/app/view/vhoge.php
<html>
<head>
<title></title>
</head>
<body>
vhoge<br>
<?php echo $msg ?>
</body>
</html>
<head>
<title></title>
</head>
<body>
vhoge<br>
<?php echo $msg ?>
</body>
</html>
■fuel/app/classes/controller/hogev.php
<?php
class Controller_Hogev extends Controller
{
public function action_index()
{
return ViewModel::forge('vhoge');
}
}
class Controller_Hogev extends Controller
{
public function action_index()
{
return ViewModel::forge('vhoge');
}
}
結果φ(--)
vhoge
あああ
あああ
ViewModelで$msgに値を設定してその$msgをビューで表示、
そんなViewModelをコントローラから呼び出しています。
ViewModelで別のメソッドを定義して使いたい場合は
呼出側で第二引数に呼び出しメソッド名を指定すれば良いらしいφ(--)
■fuel/app/classes/view/vhoge.php
<?php
class View_vhoge extends ViewModel
{
public function view()
{
$this->msg = "あああ";
}
public function view2()
{
$this->msg = "いいい";
}
}
class View_vhoge extends ViewModel
{
public function view()
{
$this->msg = "あああ";
}
public function view2()
{
$this->msg = "いいい";
}
}
■fuel/app/classes/controller/hogev.php
<?php
class Controller_Hogev extends Controller
{
public function action_index()
{
return ViewModel::forge('vhoge', 'view2');
}
}
class Controller_Hogev extends Controller
{
public function action_index()
{
return ViewModel::forge('vhoge', 'view2');
}
}
結果φ(--)
vhoge
いいい
いいい
コントローラからViewModelに値を渡したい場合は、
「set()」メソッドもしくは「set_global()」メソッドを使えば良いらしいφ(--)
■fuel/app/classes/view/vhoge.php
<?php
class View_vhoge extends ViewModel
{
public function view()
{
$this->msg = "あああ";
}
public function view2()
{
$this->msg = "いいい";
}
public function view3()
{
$this->msg = $this->data['msg1'] . $this->data['msg2'];
}
}
class View_vhoge extends ViewModel
{
public function view()
{
$this->msg = "あああ";
}
public function view2()
{
$this->msg = "いいい";
}
public function view3()
{
$this->msg = $this->data['msg1'] . $this->data['msg2'];
}
}
■fuel/app/classes/controller/hogev.php
<?php
class Controller_Hogev extends Controller
{
public function action_index()
{
return ViewModel::forge('vhoge', 'view3')->set('data', array(
'msg1' => "ううう",
'msg2' => "えええ",
));
}
}
class Controller_Hogev extends Controller
{
public function action_index()
{
return ViewModel::forge('vhoge', 'view3')->set('data', array(
'msg1' => "ううう",
'msg2' => "えええ",
));
}
}
結果φ(--)
vhoge
うううえええ
うううえええ
ふーん、特に難しいことは無さそうですね。
使いどころもいまいち思い浮かばんけど(--ゞ
取りあえずViewModelの理解、完了\(--)/