Bir Codeigniter Projedeki tüm denetleyicileri bir dizisini almak nasıl?

1 Cevap php

Ben bu yüzden her biri aracılığıyla kolayca döngü can ve tanımlanmış yolları eklemek bir Codeiginiter projedeki tüm denetleyicileri bir listesini elde etmek istiyorum. Ben peşindeyim bana ne verecek bir yöntem bulmak için görünmüyor olabilir?

İşte dizi erişmek istiyorum routes.php dosyadan kod parçacığını: -

// I'd like $controllers to be dynamically populated by a method
//
$controllers = array('pages', 'users');

// Loop through each controller and add controller/action routes
//
foreach ($controllers as $controller) {
    $route[$controller] = $controller . '/index';
    $route[$controller . '/(.+)'] = $controller . '/$1';
}

// Any URL that doesn't have a / in it should be tried as an action against
// the pages controller
//
$route['([^\/]+)$'] = 'pages/$1';

UPDATE #1

Ben başarmak için çalışıyorum biraz daha açıklamak için .. Böyle irtibata-bizi, vb Bu sayfalarda gizlilik tüm erişilebilir olması gerektiği hakkında da sayfaları içeren bir Sayfalar denetleyici var via / about / kontak-us ve / gizlilik . Yani temelde, Sayfalar denetleyicisi herhangi bir eylem / yöntem / sayfalar / belirtmek zorunda kalmadan erişilebilir olmalıdır.

Ben değil bu konuda doğru şekilde gidiyorum emin?

1 Cevap

Doğrudan soruyu kodlama cevap Evet, bunu yapabilirsiniz:

foreach(glob(APPPATH . 'controllers/*' . EXT) as $controller)
{
    $controller = basename($controller, EXT);

    $route[$controller] = $controller . '/index';
    $route[$controller . '/(.+)'] = $controller . '/$1';
}

Buuuuuut bu daha satır aşağı en esnek bir yöntem olduğu ortaya çalışmayabilir.

Bunu yapmak için birkaç yolu vardır. Biri MY_Router oluşturmak ve eklemek için

$this->set_class('pages'); 
$this->set_method($segments[0]);

/ önce yerine show_404 arasında ();

Buna / sayfa / İletişim / İletişim göndereceğiz, ama hiçbir kontrolörleri, yöntemleri, yolları ilk eşleştirilir sadece.

OOOOOOORRRRRR Modular Separation kullanmak ve ana routes.php için aşağıdaki ekleyin

$routes['404'] = 'pages';