2017年08月 / 07月≪ 12345678910111213141516171819202122232425262728293031≫09月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2011.04.06 (Wed)

CakePHP1.3.6でShellからViewTaskを使ってctpの出力結果を得る

CakePHPのshellからctpをテンプレートとして出力したいなと思った。
app/vendors/shells/templates
ってディレクトリがあるもんだから、ここに入れりゃ使えるのかと思ったけどこのtemplatesディレクトリは
意味が違うらしい。
bakeでviewを作る際のベースとなるテンプレートを変えたいときに入れる場所らしい。

で、shellでctpを使うにはどうするのかとググったら
viewtaskのgetContentを使うとできる・・・らしいのだが、記述どおりに動かしてみると
You have more than one set of templates installed.
Please choose the template set you wish to use:

とかでたりでなかったりでちゃんと動かない。

ソース辿ってみたら、shellの$this->params['theme']にディレクトリ名を入れることによって
app/vendors/shells/templates/($this->params['theme']の値)/views
以下のctpファイルを読み込めるようになることが分かった。

class HogehogeShell extends Shell {
public $tasks = array('View');

function startup(){}
function main(){
// テーマ(ディレクトリ名)を指定
$this->params['theme'] = 'uhoho';

// ctpに渡すデータ
$ctp_params = array(
'title' => 'aaaaaa',
'msg' => 'meeeeeeeeeeeei',
'colors' => array(
'red',
'blue',
'green'
),
);

// app/vendors/shells/templates/uhoho/views/weeeeei.ctpを使う
$text = $this->View->getContent('weeeeei', $ctp_params);
}
}

これで読み込めた。
テーマ名(上記の場合uhoho)>viewsの「views」ディレクトリ以下にctpファイルを置くのに注意。
これでgetcontentで呼べた。
なんかctpの置き場所がちょっとややこしいけど、とりあえずtemplates以下に置いて使えるってことでこれでいいかなと思う。


 |  00:53  |  PHP  |  トラックバック(0)  |  コメント(0)  |  Top↑

Comment

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。