CakePHP rotalarında dize değiştirme

2 Cevap php

Benim uygulamada, ben aynı öneki ile denetleyicileri bir dizi var. Örnek aşkına, bunlar diyelim:

my_posts
my_users
my_letters

Bunlar için oluşturulan URL'ler besbelli:

/my_posts/view/1
/my_users/add
/my_letters/whatever

Ben bu gibi URL'leri kullanın böylece bazı özel yönlendirme kurmak istiyorum:

/my/posts/view/1
/my/users/add
/my/letters/whatever

URL ile başlar Yani temelde, /my/ ardından denetleyici olmalıdır geçmek için my_{whatever_comes_next}.

I the documentation bakarak oldum, ama hala onu anlamaya olamaz.

2 Cevap

Router::connect(
    '/my/posts/:action/*',
    array(
        'controller'=>'my_posts',
        'action'=>'index'
    )
);
Router::connect(
    '/my/users/:action/*',
    array(
        'controller'=>'my_users',
        'action'=>'index'
    )
);
[..]

oldukça rahat değil, ancak çalışması gerektiğini, kabul etti ..

Değil emin olması mümkündür, ama neden bir ara yönlendirici kullanmak değil?

Router::connect (
    '/my/*', 
    array (
        'controller' => 'my_router', 
        'action' => 'route',
    )
);

class MyRouterController extends AppController {
    ... 
    function route ()
    {
        $args = func_get_args ();
        $controller = array_shift ($args);
        $this->requestAction (
            'my_'.$controller.'/'.implode('/', $args), 
            array ('return' => true)
        );
    }
}