もう一度なにがしたいか、書きます。
複雑な処理をしながら表示するブロックがある。
その複雑な処理の部分は、コードが多いので、controller.phpに記述し、処理の結果の表示、つまりタグ出力部分のみをview.phpに書きたい。view.phpに置きたい理由は、テンプレート切り替えで表示方法を変更できるようにしたいから。
そういうことからcontroller.phpからview.phpの表示関数を呼び出したいと思いました。
しかしながら、view.phpに関数は置けない。
だとすると、いまcontroller.phpに置いてある長ーい処理をごっそり、view.phpに持って来ないといけないのでしょうかね。
Re: view.phpでredeclareが
2012年10月23日 at 6:04
英語なのできちんとはわかりませんが、function本体をview.phpに入れて、templateで変更できるようにできないかなと思っています。
Re: view.phpでredeclareが
2012年10月23日 at 21:30
具体的にやりたいことを書きますね。
aclissさんはフォームのview.phpをご覧になったことがあると思います。
フォームのview.phpの最後に、controller.phpのfunctionを呼び出して、controller.php内でHTMLタグを出力していることをご存知と思います。
つまり、原則に反して、HTMLのタグをview.phpでなく、controller.phpで出しています。
実は海外からの要望で、フォーム項目の出力にテーブルで縦に並べるのではなくて、divのfloatで横に並べたいとの要望がありました。
これはいわゆる出力タグだけの問題なので、テンプレートで対応できないかと思っています。
しかしながら上記の通り、HTMLのタグをcontroller.phpで出力しているので、テンプレートで変更できません。そこで、なんとかHTMLの出力をcontroller.phpからview.phpに持ってきたいと思っています。
aclissさんはフォームのview.phpをご覧になったことがあると思います。
フォームのview.phpの最後に、controller.phpのfunctionを呼び出して、controller.php内でHTMLタグを出力していることをご存知と思います。
つまり、原則に反して、HTMLのタグをview.phpでなく、controller.phpで出しています。
実は海外からの要望で、フォーム項目の出力にテーブルで縦に並べるのではなくて、divのfloatで横に並べたいとの要望がありました。
これはいわゆる出力タグだけの問題なので、テンプレートで対応できないかと思っています。
しかしながら上記の通り、HTMLのタグをcontroller.phpで出力しているので、テンプレートで変更できません。そこで、なんとかHTMLの出力をcontroller.phpからview.phpに持ってきたいと思っています。
Re: view.phpでredeclareが
2012年10月24日 at 9:15
loadsurveyあたりを変えてcontrollerでHTML(テーブル)を出さずに、view側で出す様にするのが王道だと思います。
その他のやり方としては、viewで出力を一旦文字列かxmlとして変数に格納して、テーブルタグをdivタグに書き換えるやり方になると思います。
追記:
loadsurvey()をコピペして、loadsurveydiv()とかを作って、テーブルタグじゃなくてdivタグで出す様にして、view側でviewの内容に合わせてそれぞれを呼び分けた方が楽かもしれませんね。
その他のやり方としては、viewで出力を一旦文字列かxmlとして変数に格納して、テーブルタグをdivタグに書き換えるやり方になると思います。
追記:
loadsurvey()をコピペして、loadsurveydiv()とかを作って、テーブルタグじゃなくてdivタグで出す様にして、view側でviewの内容に合わせてそれぞれを呼び分けた方が楽かもしれませんね。
Re: view.phpでredeclareが
2012年10月24日 at 10:03
xmlは忘れてもらっていいと思います。
loadsurvey変えるのが一番いいと思いますよ
loadsurvey変えるのが一番いいと思いますよ
Your post has been saved and will be published after approval by the forum moderator.
Tao Sasaki
Re: view.phpでredeclareが
通常であればcontrollerに定義します。
ソレ以外だとhelperとかが使われますが、view内で単純な関数として使いたい場合は、リンクに書いてある様に
config/site_post.php
に関数を定義してください。グローバルな関数として利用できます。