base_url en CakePHP

En la mayoría de las aplicaciones web necesitamos global var base_url. En cakephp para obtener base_url actualmente pongo el siguiente código antes del método Render en app_controller.php

function beforeRender(){ $this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/')); } 

¿Hay alguna alternativa? Significa ¿hay alguna variable global disponible para obtener la url base en lugar de esto?

Sí hay. En su opinión, puede acceder a:

 < ?php echo $this->webroot; ?> 

Además, su información de host se almacena en la variable $_SERVER['HTTP_HOST'] en caso de que quiera eso.

En su controlador, si quiere URL completas, use esto:

 Router::url('/', true); 

Use cualquiera de las siguientes opciones

  1. < ?php echo $this->Html->url('/');?>

  2. < ?php Router::url('/', true); ?>

  3. < ?php echo $this->base;?>

  4. < ?php echo $this->webroot; ?>

  5. Definir constante en Config / core.php como define("BASE_URL", "www.yoursite.com/"); y usa BASE_URL en cualquier parte de tu proyecto

y crea un ayudante común con las siguientes funciones

 < ?php class CommonHelper extends AppHelper { function get_url($url){ return BASE_URL.$url; } function get_src($url){ echo BASE_URL.$url; } } ?> 

y usar en cualquier lugar del proyecto

 $this->redirect($this->Common->get_url("login"); login 

No olvides incluir Common helper en el controlador

Recomiendo el método 2 y 5 porque dan url completo.

Use Router::url('/', true) en cualquier lugar de su aplicación.
Específicamente en la Vista, puede usar $this->Html->url('/', true) (o cualquier otro Helper, de hecho, el método Helper::url es heredado por todos los Helpers), que es solo un contenedor para el método de Router anterior.

En cualquier caso, el segundo parámetro true hace que devuelva la URL completa.

Puedes utilizar

 < ?php echo Router::fullbaseUrl();?> 

también.

Consulte http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html para obtener más detalles.

Para la mayoría de los propósitos, sugiero usar CakePHP HtmlHelper para generar URL, de esa manera no tendrá que preocuparse por la URL base. Sin embargo, la manera más amigable para el usuario de obtener la URL base en su vista sería < ?php echo $html->webroot; ?> < ?php echo $html->webroot; ?> .

Puede usar Router::fullBaseUrl()

Si tiene, por ejemplo, example.com/test y desea ignorar / probar, puede usar ‘full’ => false. Además, si desea forzar ssl, puede agregar ‘_ssl’ => true.

es decir

 Router::fullBaseUrl(null, [ '_ssl' => true, 'full' => false] 

Asegúrese de pasar null como primer parámetro, ya que esta es la url base en caso de que quiera pasarla.

nota: necesita importar el enrutador para que pueda usar la función anterior:

 use Cake\Routing\Router