ZendFramework2を捨てる決心をさせたルーティングまわりはまだ手をつけていないが、既存のページを表示させることができた。まだ1ページであるが。
Smarty3を使っているので、最初にしては敷居が高いのと、グラフ描画のデータをJSONでビューに渡し、「エスケープさせないで」そのまま出力させなければいけないので、時間がかかった。
モデルはZendFramework2からの流用でOK。SQLビルダーの仕様の違いだけで、同じSQLを発行するようにすればいいだけであるから、機械的な作業である。
コントローラーは文法を合わせて、モデルを呼び出して、ビューに渡すだけなので、内容はない。
ビューはSmarty3なので、そのままでOK。ただし拡張子だけがtplからsmartyに変更になった。
ビューにデータを渡すところでJSONの生データが出力できなくて困った。「”」が"になってしまう。これだとJSONと認識されなくなってしまうので、JavaScriptがデータを使えない。
何度も何度も細かく書き直した結果、次のページが見つかった。
この中の、出力フィルタの、項目である。買った参考書には索引・目次には該当項目がない(通読していないので見落としはあるかもしれないが)。
これによると、設定を変えていない場合、ビューに渡す変数は、「全て」デフォルトでHTMLエスケープされる、とある。
ビューに生の例えばHTMLを渡したいのであれば、例えば、
$view = View::forge(‘form/index’);
$view->set_safe(‘error_html’, $val->show_errors());
return $view;
という書き方になるようである。
私はSmartyを使っているので、次のようになった。FuelPHP入門のP.80のSmartyのビューの使い方とは変わってくる。
$view = View_Smarty::forge(‘count/index’);
$view->set_safe(‘json_var’, $JSON);
$view->set(‘normal_var’, $var);
return $view;
ビュー変数の作り方はこのようになるようだ。参考書ではResponseからforgeしているが、直接forgeして使えるようである。また、このように作成した、View_Smarty変数について、setやset_safeができて、表示できるのが確認できた。
これで一つ進んだので、次は、ルーティングと残りのページである。
コメント