URL'leri Named nedir PHP Framework?

8 Cevap php

Gerçekten Django Framework olarak adlandırılmış URL'ler gibi, ve böyle bir şey desteklenen PHP Altyapıları hangi merak ediyordum. (Ben Zend Framework yok inanıyorum, ama bir açıklama yapmadan, cevaplar o hariç lütfen).

Örneğin, Django ben bir parametre olarak bir ürün kimliği kabul eden bir manzara 'fonksiyonu' işaret eder "madde-detay-sayfa" olarak "/ kalemleri / # # #" gibi bir yol adlandırabilirsiniz.

Daha sonra, 'madde-detay-sayfa 123' veya benzer (bir yardımcı fonksiyonu ile) bir bağlantı oluşturarak Ürün Detay Sayfası için adresine gönderme olabilir. Bu şekilde, ben, sonra benim URL yapısını değiştirebilirsiniz şimdiye kadar benim HTML şablonları başvuruları veya bağlantıları değiştirmeden, gerekir gerekir.

Böyle bir şey zaten vb CodeIgniter, CakePHP, var mı?

Django users: I know, this post does not contain the correct template syntax for the 'url' template tag. I was only trying to provide the general idea.

EDIT/UPDATE: I suppose this question was a bit unnecessary, as it's obvious now that all of the popular frameworks support a type of routing that works more/less like Django's does. Therefore, I feel it a bit unfair to award a single best answer, except perhaps the one that appears to come closest to matching Django's style of link-generating, since I mentioned that specifically in my question (and therefore for the benefit of others seeking the same and finding this post).

8 Cevap

Ben doğru anlamak, CakePHP kesinlikle bunu yapabilirsiniz. Routes aradığınız budur.

Tüm yol / yönlendirme yapılandırma bir dosyada, routes.php monte edilir. İşte böylece sizin bağlantıları gibi ayarlayabilirsiniz

Router::connect('/archives/*', array('controller' => 'posts', 
                                     'action' => 'archives'));

Eğer domain.com / mesaj / arşivlere rota domain.com / arşivleri istiyorum.

Biraz daha karmaşık bir örneği

Router::connect(
    '/:year/:month/:day/*',
    array('controller'=>'posts', 'action'=>'view'),
    array(
        'year' => '[12][0-9]{3}',
        'month' => '0[1-9]|1[012]',
        'day' => '0[1-9]|[12][0-9]|3[01]'
    )
);

Eğer domain.com / ileti / view / id rota domain.com / YYYY / AA / GG / post-title istiyorsanız (post-başlık ve id arasındaki bağlantı burada yolları ele değildir).

İyi şanslar.

Symfony hem de bir yönlendirme sistemi vardır. Yönlendirme kuralları bir yapılandırma dosyası (routing.yml) yapılandırılmış, ve kural bu gibi bir şey olacaktır:

items:
  url: /items/*
  param: { module: somemodule, action: someaction }

Ve Kek gibi, siz de bir URL oluşturmak için yönlendirme kuralı kullanabilirsiniz.

http://www.symfony-project.org/book/1_2/09-Links-and-the-Routing-System

Kod Ateşleyici çerçevesinde kapalı dallı Kohana, PHP5 destekler ve onların URI kütüphane ve Router sınıf ile SEO dostu URL'ler sağlar:

Kohana

Ben ikinci Kohana arasında tavsiyesini cballou olacaktır. İlk başta ben CI kullanmak vermedi ve sadece bunu beğenmedim ama sonra (CI çatal olan) Kohana bulundu ve bu harika çünkü oldukça ironik. Dokümantasyon biraz ama zor iş değer kesinlikle yoksundur.

Ve evet, herhangi bir yönlendirme kurma olmadan Kohana bölgesinde items/apple-ipod-touch-16gb / yapabilirsiniz (as başına CakePHP).

Codeigniter ne isterseniz yapar. Ben birkaç yıl için CodeIgniter kullanarak ve onu seviyorum oldum! Hemen hemen tüm php projeleri CodeIgniter üzerine inşa edilmiştir.

Eğer basit bir şey istiyorum ve ben demek gerçekten basit deneyeceğim eğer Limonade. Yine de her zaman kendi yönlendirici oluşturabilirsiniz

Tam bu nedenle bir süre için şimdi CakePHP'ye kullanıyorum. Router ayarları, MVC sıçramalı tutarken istediğiniz URL türleri alacak.

Ben size böyle bir şey yapmak demek sanırım:

(CakePHP hem pseudocode)

Router::connect('link_to_homepage', '/', array('controller' => 'foo', 'action' => 'bar');

Şablon:

$html->link('I want to go home!', 'link_to_homepage');

Yerine

$html->link('I want to go home!', '/');

Bildiğim kadarıyla ben farkında değilim gibi, böyle bir şey CakePHP'de için (henüz) exsist değildir.