0

これを引用: http://ellislab.com/codeigniter/user-guide/libraries/calendar.html

次/前のリンクを介してカレンダーを動的に増減できるようにするには、次の例のようなカレンダー コードを設定する必要があります。

$prefs = array (
    'show_next_prev'  => TRUE,
    'next_prev_url'   => 'http://example.com/index.php/calendar/show/'
);

$this->load->library('calendar', $prefs);

echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));

上記の例について、いくつかのことに気付くでしょう。

  • 「show_next_prev」を TRUE に設定する必要があります。
  • 「next_prev_url」設定で、カレンダーを含むコントローラーに URL を指定する必要があります。
  • 「年」と「月」は、それらが表示される URI セグメントを介してカレンダー生成関数に提供する必要があります (注: カレンダー クラスは、指定したベース URL に年/月を自動的に追加します)。

上記は、カレンダーで「次/前」のリンクを生成する方法について CodeIgniter 2 のドキュメントに記載されている内容の合計です。


これが私がこれを実装しようとした方法です。

私のevents.phpコントローラーファイルでは:

public function calendar()
{
    $prefs = array (
        'month_type'    => 'long',
        'day_type'      => 'short',
        'show_next_prev'=> TRUE,
        'next_prev_url' => 'http://mydomain.com/events/calendar/'
    );
    $this->load->library('calendar', $prefs);
    echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));
}

そして私のroutes.phpファイルでは:

$route['events/calendar'] = 'events/calendar';

に行くと/events/calendar/、今月のカレンダーが表示されます。

ただし、nextリンクをクリックすると/events/calendar/2013/04、期待どおりに移動しますが、それは単なる 404 ページです。

ドキュメントの例は、読者がここで他に何をする必要があるかを自動的に知る必要があるという大きな仮定をしていると思います。サンプルが完全で動作するはずなのか、それとも重要な部分が欠けていることを知っているはずなのかは不明です. という関数を作成することになっていますshow()か? それとも、何らかの方法で URL セグメントを元のcalendar()関数に戻して、そこで別の処理を行うべきでしょうか? ルート?よくわかりません。

誰でもこれに光を当てることができますか?できるだけ詳しく教えてください。ありがとうございました。

4

2 に答える 2

0

ルーティングファイルに2つの問題がありました。

1)このルートを追加する必要がありました...

$route['events/calendar/(:num)/(:num)'] = 'events/calendar/$1/$2';

2)上記の#1からのルートの上に次のルートを誤って配置しましたが、これはすべてをオーバーライドしていました...

$route['events/(:any)'] = 'events/view/$1';

働く...

$route['events/calendar'] = 'events/calendar';
$route['events/calendar/(:num)/(:num)'] = 'events/calendar/$1/$2';
$route['events/(:any)'] = 'events/view/$1';
$route['events'] = 'events';
于 2013-03-07T00:52:04.253 に答える
0

ルート ファイルにもう 1 つのルールを追加することもできます。このようなもの:

$route['events/calendar'] = 'events/calendar';
$route['events/calendar/(:any)'] = 'events/calendar';
于 2013-03-07T00:36:54.410 に答える