簡體   English   中英

在CakePHP中使用日期作為路線

[英]Using dates in CakePHP for routes

我的視圖中有以下鏈接,該鏈接通過傳遞日期和信息來調用信息:

<?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中使用。

我實際上並沒有使用控制器中的日期將帖子從數據庫中拉出,只是將它拖出了數據庫,所以這沒有太大關系。

但是,問題在於,由於日期中帶有/ ,路由器會感到困惑,並認為這是網址的兩個獨立部分。 我該如何解決?

我的路線如下:

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

您在使用蛋糕2嗎? 如果這樣做,您可以嘗試這樣做,如書中所述:

除了貪婪的星號/*還有/**尾星的語法。 使用結尾雙星,將捕獲URL的其余部分作為單個傳遞的參數。 當您要使用包含/的參數時,這很有用:

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

/ pages / the-example-/-proof的輸入URL將導致傳遞一個單獨的example-/-and-proof參數。

但是我想你應該先通過。

否則,您可以通過- (或其他任何方式)更改/ 但是,如果要保留它們,可以在路線中將日期聲明為單獨的參數,例如:

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]'
    )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM