[英]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.