Verilen URL dizesine iletme

2 Cevap php

Şu anda verilen id veritabanından bir URL dizesi alır bir kontrolör (ZendFramework) oluşturma.

/linker/show/id/6

Yani id=6 /products/list/type/games.

In LinkerController Ben de isteğe bağlı params (POST, GET) geçmek için _forward() yöntemi kullanmak istiyorum, ancak bu yöntem, ($action, $controller, $module, $params) gibi parametreleri alır ve benim dize {[( 3)]} şu anda geçerli değil.

Ben de (kullanıcı o ProductController olduğunu görmek gerekir) bu URL'ye yönlendirmek istemiyorum.

Bunu çözmek için nasıl bir fikir?

2 Cevap

Sen ileri URL olamaz (çünkü yönlendirme doğanın - Yeni bir iç istek nesne oluşturma). Sadece ileri isteği (modülü, denetleyici, eylem) için olabilir.

Kullanım yönlendirme (kontrolör) insted:

$this->_helper->redirector->gotoUrlAndExit($url);

Bu zordur. Bir yönlendirme ve ileri arasında bir mash-up istiyorum.

Geriye Çalışma:

  1. Sen $ aramak gerek bu-> _forward ($ eylem, $ controller, $ modülü, $ params)

  2. Yani, ($ params tefrika olurdu) sizin bağlayıcı bir tabloda bu dört parametre depolamak gerekiyor

Sonra, bağlayıcı kod gibi görünebilir:

public function showAction()
{
  $linker_table = new LinkerTable();
  $link = $linker_table->find(array('id' => $this->_getParam('id')));

  // first, try to forward, if all settings are there
  if ( $link && $link->hasForwardSettings() ) {
    $this->_forward( $link->action, $link->controller, $link->module, unserialize($link->params));
    return;
  }

  // perhaps other links can just be straight redirects, so then $this->_redirect($link->url)
}

Veya bazı mod_rewrite sihirli ya.