Re:

のあんのブログ

2012年03月

CakePHP 2.xにSmarty導入はちょっと前の記事のとおり。

ヘルパー使おうと思ったら、まぁ2.xになって若干ヘルパーオブジェクトの使い方が変わってるのは問題無いとして、Smartyテンプレから呼べない…。

あれ?


SmartyView.php を確認してみたら、1.x 系同等にAssignされてた。

2.x からは通常だと $this->Html->css('default') のように $this オブジェクトなんだけどー、SmartyView.php のほうで assgin($class, $this->{$class}) な感じになってて、通りで $this で呼べないわけだよね。


{$Html->css('default')}


無事Htmlヘルパーでタグが出力されました、めでたし。

 

IMG_0575

午後から会社に行く予定があったのでその前にヤマダ電機に寄ったらどっちも売ってたよ!

女の子と密室にいたら(ryはヨドバシには無かったらしい。


ということで、これから遊ぶ!

ずっとモンハンしかやってなかったから新鮮。

まぁ、VITAではGRAVITY DAZEを先月に買ったものの、最初のボスみたいな所で死んだからそれ以来やってないっていうだけなんだけど…。

リアルタイムアクションは苦手。


この2タイトルなら最後まで遊びつくせると思うw



2.0 stableになってからまともにCakePHPに触れてなかったので、とゆーか、普段1.2系に触れてるのもあって、様変わりしてる2.0系は弱いんだよねー。


強いてSmartyを組み込みたいが為にGoogle先生にお世話になったメモ。
 

先生に「cakephp 2.0 smarty」と質問するとこのURLを教えてくれます。

http://www18.atwiki.jp/javascripter/pages/26.html

ま、一番目にヒットする内容のページが広告などなどで崩れてるのもあって整形してくれてるWikiみたいなんだけれど、とりあえずこのソースをコピって /app/Views/SmartyView.php を新規作成してペーストした。

-$this->subDir = 'smarty'.DS;
+$this->subDir = ''; 

ソースの中でこの修正をしておかないと、例えば /Views/Pages/smarty/display.tpl を読み込むので /Views/Pages/display.tpl とストレートにお願いしたいから(ctp共存の仕様なのかな?知らない)。

あと、Layoutsの中だけは /smarty/default.tpl じゃなくて何故かそのまま default.tpl を読むので…。


ちなみに、コピペのソースだと routes.php でテンプレートが指定されてても無視してメソッド名のテンプレートを呼んだので別途対応しないとそれは機能しないかもしれない(デフォルトでは pages コントローラの display メソッドが実行されて home テンプレートを呼ぶはずなのにそのまま display だった)。

↑ものすごい勘違いで、CoreにあるPagesController.phpではパラメータとしてrender()に設定されるからhomeテンプレートが読み込まれるのであって、ユーザコントローラ(app/controller/PagesController.php)を作った際に特別処理しなければ普通にdisplayテンプレートが呼ばれる挙動で正常だった orz


以上が整えば、各コントローラのクラス変数 $viewClass = 'Smarty'; でおk!

ってそんな面倒なことはしないよね…、AppController で指定したら継承するだけでおk!


class AppController extends Controller {
  public $viewClass = 'Smarty'; # Smartyって書いとくとSmartyViewとして先のファイルをロード
}



最後に最初にやるべき内容を補足しとくと、Smartyをダウンロード&解凍したら

  1. libs → smarty へフォルダ名リネーム
  2. /app/Venders/smarty として設置

 
もちろんネイティブに<?php echo $name; ?>とかショートタグで<?=$name?>の方が軽いと思うよ。

でもショートタグは推奨されないしさー、もうテンプレの可読性で嫌になる時もしばしば。


だから {$name} とか書きたいじゃん?(´・ω・`)おれだけ?


 
みんなが幸せでありますように!


そんな状況ってあまり無いしさー。


聞かなきゃ始まらないのはわかってても、何をどう聞けばいいかってことろ。

そもそも2台目以降の証明書登録がそもそもダメ(というか不要)な知識もないもんで、エラー出てるのは自分のやり方が悪いんだろうなーくらいに思ってた。


Mobile Dev. (iPhone + Objcetive C) ≫ 2台目以降のMacで実機テストをする方法
http://labs.karappo.net/iphone/index.php?itemid=274


結論はここに書いてあるとおりで、証明書の秘密鍵をメインマシンで個人情報交換(.p12)フォーマットで書きだして、それを実機インストールしたいマシンでキーチェーンに登録すればおk!ということだった。

チャットで聞いてみる…。

すると!書きだした鍵ファイルあるしw先に教えてくれよwww


無事実機へインストールすることができましたとさ。


ま、知識として蓄えられたので良かったんだと思う。



とりあえず、

libpng
libjpeg,
libtiff
zlib

&それぞれの-devel を入れておこうぜ( ・`ω・´)

Leptonicaをインストールしないとconfigureでおこられた。


Leptonicaをインストールしたらまたおこられた。

cannot find input file: `Makefile.in'

./autogen.shを実行した!


またなんか言われた。

cannot find macro directory `m4'  

$ mkdir m4


./configure
make
make install


done!

と行くと思ったら…makeでエラーが出て進まない←いまここ

strngs.h:1: error: stray '\357' in program


さて…。


追記:
含まれてるソースの一部(./ccutil/strngs.h)にBOM付きなファイルがあるせいでエラーになったようだ。

BOM削除して再度makeしたら通っタ━━━━(゚∀゚)━━━━!!


BOMのファイルを発見するコマンド

find . -type f|while read file;do [ "`head -c3 -- "$file"`" == $'\xef\xbb\xbf' ] && echo "found BOM in: $file";done

BOMナシに変換もできるのかもしれないけどできないってことで、発見したファイルをBOM表示させて編集にて取り除いて保存でおk!

BOM付きUTF-8テキストからBOMをとる - foursics blog
http://blog.foursics.jp/hironobu/2008/11/utf8-bom-removal.html

$ vim -b ./ccutil/strngs.h


↑このページのトップヘ