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:

 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. Html->url('/');?>

  2. base;?>

  3. webroot; ?>

  4. 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

  

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

  

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 webroot; ?> 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