私もね、ここまで来ましたよ。

ちょっとペース遅いですね(汗)

さて、ここで、メニューから「TopPage」を押下してみました。

うわぉん。

これはですね、ふたつ理由があります。

ひとつはrutes.phpをいじっていないこと。

もうひとつは、

<li><a href=”/”>TopPage</a></li>

この”/”の意味です。

この辺り、私なんざも結構いい加減で、”/”はドキュメントルートを指すんだな、と、この動きを見て改めて認識しました。

まず、rutes.phpを本書のとおりに書き換えます。そうすることで、URLに「tweet」を含める必要がなくなります。

本書ではこれだけで、「TopPage」メニューで同じページが出るはずです。ここがドキュメントルートになっていますから。

私は変えてしまっているので、すこし工夫が必要です。

<li><a href=”/donichi”>TopPage</a></li>

こんなふうにプロジェクト名を含めることで同じ動きをします。

もうひとつ、同じ動きをする書き方があります。

<li><a href=”#”>TopPage</a></li>

hrefに”#”を指定すると、

URLに#が出てきて、画面は動きません。

これは、私が経験的に知っていたことで、何故こういう動きになるのか理由は知りません。

それで、調べてみました。

なんと、”#”はそのページの最上部へ移動する記号なんだそうです。

もし、このページが縦長で、下方へスクロールしている状態で”#”のメニューで画面の最上位へ戻れる、というものです。

このページはスクロールする長さがないので結果的にページが動かないんですね。

。。。。ダメじゃん!!

他のページへ移動して、「TopPage」押してもトップページへ戻らないってことじゃん。

てなわけでこちらを採用。

<li><a href=”/donichi”>TopPage</a></li>

未だにね、こんなもんですよ。はい。

これで、hrefの先頭に”/”があるとそれはドキュメントルートを指すんだな、と分かりました。そして”#”はそのページの先頭を意味することも。

そこで、このページに、本書にないメニューをひとつ追加しましたよ。

メニューに

<li><a href=”/donichi/calendar”>Calendar</a></li>

を加えただけです。

追加したCalendarを押下すると

出してみて、気が付きました。

navbarがないじゃん!

そりゃそうです。使ってるtemplateが違うんですから。

calendar.phpにbeforeを加えます。

public function before()
{
    $this->template = “tweet/template”;
    parent::before();
}

更に、

private function disp_calendar($data){
  
    $this->template->title = "Calendar";
  
    $view = View::forge('calendar/index',$data);
  
    $view->title = "祝!フロイデさん31周期!!";
  
    $this->template->content = $view;
  
    $this->template->msg = $data["msg"];
  
    $this->template->content->set_safe('cal_head',$this->cal_header());
  
    $this->template->content->set_safe('cal_body',$this->cal_body($data));
  
    $this->template->content->set_safe('options',$this->makeOptions($data['month_num']));
  
}

そしてviewも少し直します。template.phpに書いてあった

<h1><?php echo $title; ?></h1>
<hr>

これを/view/calendar/index.phpへ移します。

ここから

カレンダーへ飛び、

ここへ戻って来られるようになりました。

なんか、意味ないことしてますねぇ。。ま、templateを移すのはそんなに大変じゃない、ってことで。ご納得いただけると助かります。はい。