2012-09-01 21 views
0

我已經在我看來,下面的鏈接,通過傳遞日期和後段塞調用後:CakePHP中使用日期路線

<?php echo $this->Html->link($post['Post']['title'], array('controller' => 'posts', 'action' => 'view', 'date'=>date('Y/m', strtotime($post['Post']['datetime'])), 'slug'=> $post['Post']['slug'])); ?></h2> <h4><?php echo $post['Post']['datetime']; ?><

正如你可以看到我用的strtotime做在URL中使用的日期時間更漂亮。

我實際上並沒有在控制器中使用日期來將帖子從數據庫中拉出來,只是slu so一聲,所以無關緊要。

但問題是,由於日期有/,路由器會感到困惑,並認爲它是url的兩個單獨部分。我該如何解決?

我的路線如下:

Router::connect('/news/:date/:slug', 
       array('controller' => 'posts', 'action' => 'view'), 
       array(
        //'date' => '[A-Za-z0-9\._]+', 
        'slug' => '[A-Za-z0-9\._]+', 
        'pass' => array('date', 'slug') 
       )); 

回答

1

您使用的蛋糕2?如果你這樣做,你可以試試這個,因爲書上說:

除了貪婪的明星/*也存在/**尾隨明星 語法。使用尾隨雙星,將捕獲一個 URL的其餘部分作爲單個傳遞的參數。當你想使用 ,其中包括一個參數/在它這是有用的:

<?php 
Router::connect(
    '/pages/**', 
    array('controller' => 'pages', 'action' => 'show')); 
?> 

的/頁傳入的URL /的,例如 -/- 和證明將導致 單例通過了例證 -/- 和證明。

但我想你應該先通過slu g。

否則,您可以更改/-(或其他任何東西)。但是,如果你想保留它們,你可以聲明的日期作爲您的路線分開的參數,是這樣的:

Router::connect(
    '/news/:year/:month/:day', 
    array('controller' => 'posts', 'action' => 'view', 'day' => null), 
    array(
     'year' => '[12][0-9]{3}', 
     'month' => '0[1-9]|1[012]', 
     'day' => '0[1-9]|[12][0-9]|3[01]' 
    ) 
); 
+0

我喜歡獨立Date參數的方法 – mark

+0

是的,我喜歡這種方法,以及:)謝謝 – Cameron