base_url in CakePHP



Answers

Verwenden Sie eine beliebige Option unten

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

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

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

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

  5. Definieren Sie die Konstante in Config / core.php als define("BASE_URL", "www.yoursite.com/"); und verwenden Sie BASE_URL beliebigen Stelle in Ihrem Projekt

und erstellen Sie einen gemeinsamen Helfer mit folgenden Funktionen

<?php
class CommonHelper extends AppHelper {

    function get_url($url){
        return BASE_URL.$url;
    }

    function get_src($url){
        echo BASE_URL.$url;
    } 
}
?>

und überall im Projekt verwenden

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

<a href="<?php $this->Common->get_src('users/login');?>">login</a>

Vergessen Sie nicht, Common Helper in den Controller aufzunehmen

Ich empfehle Methode 2 und 5, weil sie vollständige URL geben.

Question

In den meisten Webanwendungen benötigen wir global var base_url. In CakePHP, um base_url zu bekommen, setze ich den folgenden Code auf beforwardRender Methode in app_controller.php

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

Gibt es eine Alternative? Bedeutet es, dass eine globale Variable verfügbar ist, um die Basis-URL zu erhalten?




Sie können Router::fullBaseUrl()

Wenn Sie zum Beispiel example.com/test haben und Sie ignorieren / testen möchten, können Sie 'full' => false verwenden. Auch wenn Sie SSL erzwingen möchten, können Sie '_ssl' => true hinzufügen.

dh

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

Stellen Sie sicher, dass Sie null als ersten Parameter übergeben, da dies die Basis-URL ist, falls Sie sie übergeben möchten.

Hinweis: Sie müssen Router importieren, damit Sie die obige Funktion verwenden können:

use Cake\Routing\Router








Links



Tags

php php   cakephp