uchiumiです。
今日は「Askeet Tutorial」の、
つまづいていたところ、エラーが出たところなどについて書きたいと思います。
ユーザーのプロフィールの更新の所でのエラー
ソースをsvnリポジトリから落としながら作業していたのですが、
途中でupdatearray.phpがないよ!というエラーが出てしまいました。
確かにそんなphpファイルは作ってないし、呼んだ覚えもありません。
不思議に思って先輩に相談すると、user/handleErrorUpdateの、
return array(’user’, ’showSuccess’);
がおかしいということがわかりました。
普通はこのような書き方はしないらしいのですが、私は気づかずスルーしていました。
同じ様なエラーを出さない為にも、仕組みや正しい記述の仕方を覚えておこうと思います。
正しい記述は下記の様になります。
$this->setTemplate(’show’);
return sfView::SUCCESS;
setTitle()について
・修正前
$this->setTitle($this->title);
・修正後
$this->getResponse()->setTitle($this->title);
いままでsvnのデータにあって毎回エラーを出していたsetTitle()ですが、上記の様に書く事で動かすことができました。
何故getResponse()がないといけないのか、という詳細がまだ説明できるまでわかっていないので、後で調べてみようと思います。
とりあえずこれでヘッダのタイトルを変えられるようになりました。
匿名の処理について
以前書いた匿名の処理なのですが、どうやらテストデータを全面書き換えしてしまったのがいけないようでした。
ちゃんとデフォルトで入っていたのですね。もっとちゃんと読まなければならないと感じました。
なのでとりあえずテストデータにいなくても匿名で投稿できるように変更してみました。
まずユーザー名を出す時にユーザーを判定しているUserHelper.phpのlink_to_profile()のところを
function link_to_profile($user) {
if (!$user) {
return '名無しさん';
} else {
return link_to($user->__toString(), '@user_profile?nickname='.$user->getNickname());
}
}
というようにしました。
しかしこれだと文字列そのまま返しているので、美しくないですね。
こういうのはやはり設定ファイルに書いておきたいと思いましたが、今はこれが精一杯でした。
scriptが読み込まれない
<script src=”/sf/js/prototype.js” type=”text/javascript /”>
とlayout.phpに記述すると、
- /sf/prototype/js/prototype.js
- /sf/prototype/js/builder.js
- /sf/prototype/js/effects.js
の3つのファイルが呼び出され、ヘルパーなどを使いprototypeのjavascriptがついて使えるようになるのですが、
・layout.php
<?php echo include_javascripts() ?>
・view.yml
javascripts: [/sf/js/prototype]
と記述したときは、記述されるタグは同じなのですがファイルが上手く読み込めてくれずjavascriptが使えないページがありました。
結局仕組みはわかりませんでしたが、ファイルをフルパス指定すると読めてくれるので
・view.yml
javascripts: [/sf/prototype/js/prototype, /sf/prototype/js/builder, /sf/prototype/js/effects]
と記述することにしました。 しかしもとから読み込まれているページは別に二重で指定されてはいないなど、謎だらけでした。 askeetが一段落ついたときにでも、また考えてみたいと思います。

コメントをどうぞ