CodeIgniter で遊んでいます。古い醜い PHP の一部を、より保守しやすいフレームワークに変換したいと考えています。しかし、かなり苛立たしい障害に遭遇しました。ビューでメソッドを定義できないようです。試行するたびに完全に空白のページが表示され、デバッグ ログを見ると、ビューが読み込まれた後に処理が停止したように見えます。ビュー内でメソッドを定義できますか? そうでない場合、その理由と、どのような回避策を提案しますか?
注: このメソッドは、出力文字列のフォーマットに関係しています。
CodeIgniter で遊んでいます。古い醜い PHP の一部を、より保守しやすいフレームワークに変換したいと考えています。しかし、かなり苛立たしい障害に遭遇しました。ビューでメソッドを定義できないようです。試行するたびに完全に空白のページが表示され、デバッグ ログを見ると、ビューが読み込まれた後に処理が停止したように見えます。ビュー内でメソッドを定義できますか? そうでない場合、その理由と、どのような回避策を提案しますか?
注: このメソッドは、出力文字列のフォーマットに関係しています。
ヘルパーで関数を定義し、コントローラーからロードします。そうすれば、他のビューでも関数を再利用できます。
私はCodeIgnitorに精通していませんが、テンプレートが複数回含まれている可能性があります。関数をチェックでラップしてみてください。
if (!function_exists('myfunc'))
{
function myfunc() {}
}
CodeIgnitorはおそらくエラーを飲み込んでいるので、関数の直前にバッファーをフラッシュすることもできます。
while(ob_end_flush()){}
error_reporting(E_ALL);
ini_set('display_errors', 1);
ただし、実際には、文字列フォーマットコードをもう少し一般的にする必要があります。テンプレートは、関数の追加を開始するのに適した場所ではありません。コードの複製を開始すると、テンプレートを持つという目的がまったく失われます。CodeIgnitorのヘルパーとプラグインを試してみることをお勧めします
ビューはコントローラー アクションを呼び出すためのものではありません。ロジックを逆にして、コントローラーでその関数を呼び出し、ビューに送信した変数に設定します。その後、if ステートメントでビュー テンプレートの変数をチェックできます。
それがうまくいかない場合は、ヘルパーが必要かもしれません: http://codeigniter.com/user_guide/general/helpers.html