Nasıl bir yönlendirme INI dosyasında Zend Framework bir Subdomain için Yönlendirme Zincirleri yazıyorsunuz?

1 Cevap php

Böyle subdomain.site.com / bölüm / ben başka bir rota oluşturma ve daha sonra alt alan rota zinciri için çalışıyor gibi, bir alt altında her bölüm için daha sonra Zend Router kullanarak bir subdomain oluşturmak çalışıyorum ve yaşıyorum. ama nasıl bilmiyorum. Ben bulabildiğim tüm belgeleri ve tüm forumları okudum, ama benim kendi üzerine anlamaya yol açar. Şimdiye kadar, benim girişimleri bana bu hatayı alıyorum:

Catchable fatal error: Argument 2 passed to Zend_Controller_Router_Rewrite::addRoute() must implement interface Zend_Controller_Router_Route_Interface, null given, called in /var/local/zend/library/Zend/Controller/Router/Rewrite.php on line 155 and defined in /var/local/zend/library/Zend/Controller/Router/Rewrite.php on line 93

aşağıdaki kodu:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
routes.b2b.defaults.module = b2b
routes.b2b.defaults.controller = index
routes.b2b.defaults.action = index

routes.b2b_signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b_signup.route = "/signup"
routes.b2b_signup.defaults.controller = "index"
routes.b2b_signup.defaults.action   = "signup"

routes.b2b_login.type = "Zend_Controller_Router_Route_Chain"
routes.b2b_login.chain = b2b_signup

Ben her yerde net bir INI dosyası ile bu zincirleme yapmak için nasıl bir örnek bulamıyorum. Tüm uygulama yönlendirme yapılandırma için bir INI yazılmış, bu yüzden internet üzerinden örnekler 100% in olduğu, bu konuda (veya XML) bir dizi tabanlı yapılandırma için bitti geçemezsiniz

Ben dizi şeklinde bunu yapabilirdi, ben sadece bu söyleyebiliriz:

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    'sales.sitename.com',
    array(
        'controller' => 'index',
        'module'     => 'b2b',
        'action'     => 'index'
    )
);

$hostnameRoute = new Zend_Controller_Router_Route_Static(
    '/signup',
    array(
        'controller' => 'index',
        'module'     => 'b2b',
        'action'     => 'signup'
    )
);
    $chainedRoute = new Zend_Controller_Router_Route_Chain();
    $chainedRoute->chain($b2b_signup)

Herkes bir INI dosyasında yukarıdaki yapmak konusunda herhangi bir fikir var mı?

1 Cevap

İşte INI formatında, ne istediğinizi temelde:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
; you could specify a default module (or anything) to use for the whole 
; route chain here, like so: 
; routes.b2b.defaults.module = "default"

routes.b2b.chains.signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b.chains.signup.route = "/signup"
routes.b2b.chains.signup.defaults.controller = "index"
routes.b2b.chains.signup.defaults.action = "signup"

routes.b2b.chains.anotherroute.route = "/something/:foo" ; etc, etc.
routes.b2b.chains.anotherroute.defaults.action = "foo"
routes.b2b.chains.anotherroute.defaults.controller = "index"
routes.b2b.chains.anotherroute.defaults.foo = "bar"
routes.b2b.chains.anotherroute.reqs.foo = '[a-z]+'

b2b-signup, ve b2b-anotherroute: Bu size aşağıdaki yolları verecektir.

İşte rota zincirleme bazı önemli notlar var:

Birlikte yolları zincirleme zaman, dış rota parametreleri iç rota parametreleri daha yüksek önceliğe sahiptir. Eğer dış ve iç rotasında bir kontrol cihazı tanımlamak Böylece, dış rotanın kontrol seçilecektir.

Ebeveyn / çocuk zincirleme rota isimleri her zaman bir çizgi ile birleştirilmiş! Yani, yukarıdaki örnekte olduğu gibi, b2b.chains.signup b2b-signup (hangi URL montaj için kullanabilir, vb) adında bir yol haline gelir.

Sen zincirleme devam edebilirsiniz! Zincirlerinden zincirler zincirlerine sahip olabilir.

Zincirleme yollarının Çocuklar joker ile çalışmaz. Bkz #ZF-6654. İşte bu büyük bir anlaşma olmayabilir neden bahsediyor blog post bu.