Askeet Tutorial aboutを表示する!

前回の記事にて、 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 の内容が表示…

about1

されません。くっ。

内容の表示はされませんが、とりあえず http://askeet/about に飛べる様になりました。

【$html を表示したい】

そういえば、 $html を表示するためのテンプレートがありません。なるほどこれでは表示できない。

ということで、aboutSuccess.php を作成。

  <?php echo $html ?>

…しても出ません。うおお。

と、よく考えてみると、 setTitle() がどこで定義されているものなのかわかりません。

ということでコメントアウト。

    //$this->setTitle('askeet! &raquo; about');

すると…

about2

おぉ〜!出ました!
どうやら、定義していないメソッドを呼ぶ部分でエラーが出ていたため、画面が表示されなかった様です。

しかし、肝心の本文が表示されてません><

ここでギブアップ…。
muroiいわく「about.txt を作る位置が違う」とのことで、素直に data/ 以下に about.txt を作成し直したところ…

about3

出ました!なんだひかっけだ!

…とはいえ、よく考えれば、データファイルはデータディレクトリに置かないとだめですよね。
今回も、理解の未熟さから、つまらないミスで時間をつぶしてしましました…。

とりあえず、これで about を表示することができました。
思っていたよりも、うんと少ない作業で済みました。よかったよかった。

次回は、tagの消去 に挑戦しようと思います。がんばります!

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree