无法获得适用于CodeIgniter 2 Calendar类的下一个/上一个链接

时间:2013-03-07 00:16:14

标签: php codeigniter calendar codeigniter-2

引用此信息: 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”偏好设置中提供包含您日历的控制器的网址。
  •   
  • 您必须通过它们出现的URI段向日历生成功能提供“年”和“月”(注意:日历)   class会自动将年/月添加到您提供的基本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()函数,并在那里与它们做其他事情?路线?我不确定是什么。

有人可以对此有所了解吗?请尽可能详细。感谢信。

2 个答案:

答案 0 :(得分:0)

您可能想在路线文件中再添加一条规则。 像这样:

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

答案 1 :(得分:0)

我的路由文件中有两个问题。

1)我需要添加这条路线......

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

2)我错误地将以下路线放在上面的路线上面的路线,这是超越了...

$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';