2 Stimmen

Weiterleitung zu verschiedenen URLs je nach Beitragstyp

Wie kann ich meine Routen am besten so einrichten, dass verschiedene Arten von Beiträgen unterschiedliche URLs haben?

Regelmäßige Stellen sind zum Beispiel /posts/slug während "featured posts" sind /featured/slug

Beide verweisen auf denselben Controller und dieselbe Aktion /posts/view/slug .

Ich habe mit verschiedenen Möglichkeiten experimentiert, aber mit wenig Erfolg. Derzeit sehen meine Link-Parameter etwa wie folgt aus:

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

Bearbeiten: Ich könnte eine Aktion für jeden verschiedenen Typ erstellen und setAction verwenden, um die Ansicht Aktion stattdessen zu verwenden. Obwohl gibt es einen besseren Weg, dies zu tun?

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

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

3voto

Young Punkte 7566

Ich denke, Sie können dies auch tun, indem Sie folgende Zeile in Ihrer /app/config/routes.php hinzufügen:

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

Ver Routeneinstellung im Kochbuch

0voto

neilcrookes Punkte 4208

Das könnte funktionieren:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X