前回の記事にて、 Tutorial16日目でどの様な変更が行われているのか、ということについて触れました。
今回はその中でも、「about ページの表示」に挑戦したいと思います!
【aboutページを表示するにはどうすればいいのか?】
まず、contentモジュールを作成します。
symfony init-module frontend content
content/actions.class.phpにて、indexアクションを消去し、aboutアクションを追加します。
muroiによる、あげたてほやほやのyamlについての記事を参考にしながら、tutorialのコードに一部変更を行います。
public function executeAbout()
{
require_once('markdown.php');
$this->html = markdown(file_get_contents(sfConfig::get('sf_data_dir')
.'/content/about.txt'));
$this->setTitle('askeet! » about');
}
ふむふむ…。どうやらこの about アクションでは、 content/about.txt の内容を $html に格納する様です。
しかし、 about.txt が見当たらない…ため、 apps/frontend/modules/content 以下に作成。
私の理解が正しければ、 about には以下の文章が表示されることになります。
about をクリックすれば見れる…はず!!!
また、 markdown.php とあるので、用心のため以前ダウンロードしたものを templates 直下にコピペしておきます。
apps/frontend/config/routing.yml に about を追加。
# content
about:
url: /about
param: { module: content, action: about }
apps/frontend/templates/layout.phpの、 about のリンク先を
<li><?php echo link_to('about', '@homepage') ?></li>
から、
<li><?php echo link_to('about', '@about') ?></li>
へ変更。
すると、 about をクリックで about.txt の内容が表示…
されません。くっ。
内容の表示はされませんが、とりあえず http://askeet/about に飛べる様になりました。
【$html を表示したい】
そういえば、 $html を表示するためのテンプレートがありません。なるほどこれでは表示できない。
ということで、aboutSuccess.php を作成。
<?php echo $html ?>
…しても出ません。うおお。
と、よく考えてみると、 setTitle() がどこで定義されているものなのかわかりません。
ということでコメントアウト。
//$this->setTitle('askeet! » about');
すると…
おぉ〜!出ました!
どうやら、定義していないメソッドを呼ぶ部分でエラーが出ていたため、画面が表示されなかった様です。
しかし、肝心の本文が表示されてません><
ここでギブアップ…。
muroiいわく「about.txt を作る位置が違う」とのことで、素直に data/ 以下に about.txt を作成し直したところ…
出ました!なんだひかっけだ!
…とはいえ、よく考えれば、データファイルはデータディレクトリに置かないとだめですよね。
今回も、理解の未熟さから、つまらないミスで時間をつぶしてしましました…。
とりあえず、これで about を表示することができました。
思っていたよりも、うんと少ない作業で済みました。よかったよかった。
次回は、tagの消去 に挑戦しようと思います。がんばります!




コメントをどうぞ