Esiste un modo generico per instradare gli URL in Kohana quando è presente il trattino?

StackOverflow https://stackoverflow.com/questions/1004716

  •  05-07-2019
  •  | 
  •  

Domanda

Kohana imposta automaticamente gli URL in questo modo

http://www.example.com/controller/method/argument1 / argument2 / etc

Ora mi piace usare il trattino per separare le mie parole nell'URL e ho un indirizzo come questo

http://www.example.com/business-hub

Il mio controller si chiama BusinessHub_Controller. Quello che mi infastidisce, è / business-hub / per abbinare il controller BusinesHub, devo aggiungere una voce personalizzata nel route.php sotto la cartella application / config. Sembra anche che debba aggiungerne uno per il metodo ogni , il che è davvero fastidioso. Ad esempio, ecco un estratto,

$config['business-hub'] = 'businesshub/index/';

$config['business-hub/logout'] = 'businesshub/logout';

$config['business-hub/media-releases'] = 'businesshub/mediareleases';

Ovviamente, questo è davvero fastidioso. C'è comunque un modo per dire a Kohana di convertire l'URL nel nome camelCase, qualcosa come

$urlController = 'business-hub';

$correctController = str_replace('-', ' ', $urlController);

$correctController = ucwords($correctController);

$correctController = str_replace(' ', null, $correctController);

$correctController = $correctController . '_Controller';
È stato utile?

Soluzione

Piuttosto che limitarmi a rimuovere i trattini, li convertivo in caratteri di sottolineatura; e lo farei usando un gancio. Assicurati che gli hook siano abilitati in config / config.php e quindi crea un file in hook chiamato, diciamo, dashes_to_underscores.php:

function convert_dashes_to_underscores_in_url()
{
    Router::$current_uri = str_replace('-', '_', Router::$current_uri);
}

Event::add_before(
    'system.routing',
    array('Router', 'setup'),
    'convert_dashes_to_underscores_in_url');

Altri suggerimenti

Per la variante camelCase non lo so, ma qualcosa del genere dovrebbe funzionare

$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';

Poiché la parte del percorso in kohana è un'espressione regolare.

Naturalmente questo è fortemente limitato ai casi da te forniti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top