Skip to content

Instantly share code, notes, and snippets.

@chadrien
Last active November 26, 2021 10:49
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chadrien/a201fba2f3de9ee2c0c9 to your computer and use it in GitHub Desktop.
Save chadrien/a201fba2f3de9ee2c0c9 to your computer and use it in GitHub Desktop.
CakePHP force trailing slash
<?php
App::uses('TrailingSlashUtil', 'Lib');
App::uses('Controller', 'Controller');
class AppCpontroller extends Controller {
public function redirect ($url, $status = null, $exit = true) {
$url = TrailingSlashRouter::url($url);
return parent::redirect($url, $status, $exit);
}
}
<?php
App::uses('TrailingSlashUtil', 'Lib');
App::uses('Helper', 'Helper');
class AppHelper extends Helper {
public function url ($url = null, $full = false) {
$url = TrailingSlashRouter::url($url);
return parent::url($url, $full);
}
}
<?php
App::uses('Router', 'Routing');
class TrailingSlashUtil{
public static function url($url = null, $full = null) {
$matches = array();
preg_match('`^(.*)((?:[^/]*\..*)?(?:\?.*)?(?:#.*)?)$`U', Router::url($url), $matches);
list(, $url, $queryString) = $matches;
if (substr($url, -1) !== '/') {
$url .= '/';
}
return $url . $queryString;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment