2011-11-20 82 views
0

這似乎已經出現了其他用戶,但我還沒有看到一個答案,看起來與我試圖實現的相關。CakePHP路由與分頁

所以基本上我在/admin/portfolio/

爲我的投資組合管理面板,當我去到下一個頁面,我得到這樣的:/admin/portfolio/index/page:2/admin/portfolio/index/page:1

1)如何從刪除索引網址是什麼?所以它只是/admin/portfolio/page:2

2)如何讓這個page:1只是/admin/portfolio/,如果有人試圖進入頁面1,那麼它只是改變的URL /重定向他們只是沒有參數的指標。否則,這意味着我有重複的第一頁。

正如我前面說過的,我在網上查看了一些示例,但它們都顯得非常混亂,並且與我使用的代碼不同(請參見下文),因此我不確定如何實現我正在做的事情。

<?php echo $this->Paginator->numbers(); ?> 

    <?php echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); ?> 
    <?php echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); ?> 

    <?php echo $this->Paginator->counter(); ?> 

我已經試過這樣:

<?php $this->Paginator->options(array('url'=>array(
'admin'=>true, 
'controller' => 'portfolio', 
    'action' => 'index'))); ?> 

但我仍然得到該指數在url

但是添加此:Router::connect('/admin/portfolio/*',array('admin'=>true,'controller'=>'portfolio','action'=>'index'));沒有擺脫從URL中的指數,但是這會導致第二個問題,因爲任何東西都可以添加到URL,因此不再嚴格,並顯示404的時候查看虛假網頁

所以我也試過:

Router::connect('/admin/portfolio/:page', 
        array('admin'=>true,'controller'=>'portfolio','action'=>'index', 
        array(
        'pass' => array('page'), 
        'page'=> '[0-9]+' 
        ))); 

但是這不起作用,因爲路由沒有看到頁面!

+0

任何,因爲我真的難倒了這個更新:/感謝 – Cameron

回答

1

我會建議明確聲明您的投資組合路線。這樣,您就不會干擾應用程序中的任何其他控制器/操作。

考慮到這一點,你的應用程序的組合部分路線的定義是這樣的:

/** 
* add, edit and delete actions 
*/ 
Router::connect('/admin/portfolio/add', array(
    'controller' => 'portfolio', 'action' => 'add', 'admin' => true 
)); 
Router::connect('/admin/portfolio/delete/:id', array(
    'controller' => 'portfolio', 'action' => 'delete', 'admin' => true), array(
    'pass' => array('id') 
) 
); 
Router::connect('/admin/portfolio/edit/:id', array(
    'controller' => 'portfolio', 'action' => 'edit', 'admin' => true), array(
    'pass' => array('id') 
) 
); 

/** 
* index action 
*/ 
Router::connect('/admin/portfolio', array(
    'controller' => 'portfolio', 'action' => 'index', 'admin' => true, 'page' => 1 
)); 
Router::connect('/admin/portfolio/*', array(
    'controller' => 'portfolio', 'action' => 'index', 'admin' => true), array(
    'named' => 
     array('page' => '[\d]+'), 
) 
); 
+0

唯一的問題是,它意味着虛假網址的工作,例如'/ admin/portfolio/fake-url'並且不顯示404 – Cameron

+0

也頁:1仍然有效,並且不重定向以修復url複製 – Cameron

+0

@Cameron你可以通過檢查你的控制器中的'假的網址'即命名參數「頁面」或默認值「頁面」始終存在 - 如果不存在,則發出404或異常。關於你的第二個評論,分頁不會輸出這個URL。你可以手動訪問它,但只有你會知道它。 –