Mesajı türüne göre farklı bir URL yönlendirme

2 Cevap php

Ne benim rotalar mesajların pek farklı farklı URL'ler kurmak için en iyi yol olacağını?

Özellikli mesajlar /featured/slug iken Örneğin, düzenli mesajlar /posts/slug vardır

Aynı kontrolör ve eylem bağlantı Hem /posts/view/slug.

Bunu yapmanın farklı yolları ile ancak çok az başarı ile denedi. Şu anda benim link params aşağıdaki gibi görünmelidir:

array('controller' => 'posts', 'action' => 'view', 'featured' ,$post['Post']['slug'])

Düzenleme: Ben her farklı türü için bir eylem oluşturmak ve yerine görünüm eylemini kullanın setAction kullanabilirsiniz. Bunu yapmak için daha iyi bir yolu olsa?

array('controller' => 'posts', 'action' => 'featured', $post['Post']['slug'])

function featured($slug) {
    $this->setAction('view', $slug);
}

2 Cevap

Ben de senin / app / config / routes.php takibe satırı ekleyerek yapabilirsiniz düşünüyorum:

Router::connect('/:controller/featured/*',array('action' => 'view'));

Bkz route setting in cookbook

Bu işe yarayabilir:

// app/config/routes.php
Router::connect('/featured/:slug', array(
  'controller' => 'posts',
  'action' => 'view',
  'type' => 'featured'
));
Router::connect('/posts/:slug', array(
  'controller' => 'posts',
  'action' => 'view',
  'type' => 'normal'
));

// one of your views
echo $html->link('Featured post title', array(
  'controller' => 'posts',
  'action' => 'view',
  'type' => 'featured',
  'slug' => $post['Post']['slug']
));
or
echo $html->link('Normal post title', array(
  'controller' => 'posts',
  'action' => 'view',
  'type' => 'normal',
  'slug' => $post['Post']['slug']
));