id olmadan yönlendirme cakephp?

2 Cevap php

Url kimliği olmadan kek rota URL'ler için herhangi bir yolu var mı?

Peki yerine www.mydomain.com / id / makale adı Ben sadece istiyorum www.mydomain.com / makale-name

I've been following this. http://book.cakephp.org/view/543/Passing-parameters-to-action

2 Cevap

Tabii. Bunun için yapmanız gereken tek şey istediğiniz makale aşağı pin URL benzersiz yeterli bilgi var olmasıdır. /article-name sizin veritabanı içinde benzersiz ise, istediğiniz belirli bir kaydı bulmak için kullanabilirsiniz.

Config / routes.php In:

// ... configure all normal routes first ...

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

Kontrolörleri / articles_controller.php In:

function view ($article_name) {
    $article = $this->Article->find('first', array(
        'conditions' => array('Article.name' => $article_name)
    ));
    ...
}

Meşru URL görünebilir bir şey gibi ürünlerin adını için dikkatli olun, böylece çatışmalar içine koşmak yok. URL http://example.com/pages ürün sayfaları 'ya işaret mu array('controller' => 'pages', 'action' => 'index')? Bu amaçla da tüm kontrolörler ilk erişilebilir olmasını sağlayan bir şekilde routes.php sizin yolları tanımlamak ve sadece tanımsız kalanı ArticlesController içine taşınıyor alır gerekir. third parameter of Routes::connect , sen bu amaç için kullanabilirsiniz bir RegEx filtre belirlemenizi sağlayan bak.

Bunu yapabilirdi:

// In routes.php
$rewrites = array();
$rewrites = am($rewrites, ClassRegistry::init('Article')->rewrites());
$rewrites = am($rewrites, ClassRegistry::init('AnotherModel')->rewrites());
$rewrites = am($rewrites, ClassRegistry::init('YetAnother')->rewrites());
foreach ($rewrites as $rewrite) {
    Router::connect($rewrite[0], $rewrite[1], $rewrite[2]);
}

Deceze yöntemi ile, sadece tek bir catch tüm olabilir. Eğer isterseniz bu yöntemde, bir bütün yığını tanımlayabilirsiniz.

Eğer bir yapılandırma dosyasından modeli sorguladığınız bu yöntem, tür rağmen hacky olduğunu.