web-dev-qa-db-fra.com

Comment définir l'URL de base dans la structure Yii

Quand je fais

print_r(Yii::app()->request->baseUrl)

Je reçois une chaîne vide. Un message sur le forum Yii dit ceci est vide par défaut . Comment puis-je changer sa valeur par défaut pour pouvoir utiliser des URL absolues?

8
David Xia

Comme l'indique le message de ce forum, il peut être différent pour différentes plates-formes ou si l'application Web ne se trouve pas dans le dossier par défaut.
Toutes ces choses fonctionnent pour moi: 

echo Yii::app()->request->baseUrl."<br/>" ;
print_r(Yii::app()->request->baseUrl);
echo "<br/>";
var_dump(Yii::app()->getBaseUrl(true));
echo "<br/>";
echo Yii::app()->request->getBaseUrl(true);

J'ai utilisé yiic pour créer l'application Web, avec les paramètres par défaut à l'aide de la commande suivante dans un terminal, yiic webapp /path/to/webapp
Cela génère donc la structure de répertoire nécessaire pour l'application Web, ainsi que les fichiers squelette par défaut. Essayez et voyez ensuite comment cela fonctionne. Je suis nouveau pour vous.

Modifier:

Cette solution a peut-être fonctionné pour l'opération, mais la manière correcte de définir baseUrl est indiquée par la réponse d'ecco à cette question .

12
bool.dev

Vous pouvez modifier /path/to/application/protected/config/main.php pour modifier la valeur par défaut. Ajoutez un composant de requête et configurez la propriété baseUrl.

return array(
    ...
    'components' => array(
        ...
        'request' => array(
            'baseUrl' => 'http://www.example.com',
        ),
    ),
);
31
ecco

C'est probablement vide parce que votre fichier d'amorçage (index.php) se trouve à la racine Web. Si ce n'était pas le cas, vous devriez voir une valeur. Le changer irait à l'encontre de son objectif.

Vous utiliseriez comme:

href="<?php echo 'http://www.myhost.com' . Yii::app()->request->baseUrl; ?>/css/screen.css"

ce qui dans la plupart des cas ne changerait pas le chemin, mais si vous décidiez, par exemple, de placer votre application Yii dans un sous-répertoire, elle serait alors portable. (Supprimez simplement la méthode http et le nom d'hôte ci-dessus pour le faire fonctionner sur le même hôte sur lequel l'utilisateur se trouve.)

3
ldg

Yii :: app () -> baseUrl ne renvoie qu'un chemin relatif depuis l'url vers index.php , Par exemple: 127.0.0.1/index.php renvoie '' 127.0 .0.1/yii/index.php renvoie '/ yii'

1
balrok

essayez echo Yii::$app->baseUrl(true) 
Notez que le vrai paramètre est ce qui fait le nécessaire.

0
Kushagra

Si vous utilisez url helper pour générer des URL, vous devez définir la clé baseUrl sur le composant UrlManager.

 'urlManager' => [       
        'baseUrl' => 'http://example.com', 

Ensuite, vous pouvez créer une URL absolue en utilisant Url helper comme,

echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name'], true); // output ===> http://example.com/index.php?r=site%2Findex&src=ref1#name

0
Sachin G.

Avec Yii 2.0.13.1 , Le code ci-dessous fonctionne correctement

<?php echo Yii::$app->request->baseUrl; ?>
0
Anoop Saini