2011-09-30 7 views
7

Cuando hagoCómo configurar URL base en Yii Marco

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

consigo una cadena vacía. Una publicación en el foro de Yii dice this is blank by default. ¿Cómo puedo cambiar su valor predeterminado para que pueda usar URL absolutas?

+0

¿qué versión de yii? y el directorio donde está el proyecto? ¿es una aplicación web? ¿Has usado yiic? –

+0

@DroidUser Yii Versión 1.1.7. Mi árbol de directorios es este: '/ htdocs/protected/(archivos de aplicaciones web)' '/ lib/yii/(yii core files)' Es una aplicación web. No he usado yiic. ¿Hay alguna manera de establecer baseUrl ejecutando eso? No hice la instalación inicial del framework Yii. –

+0

en mi respuesta, he mencionado cómo ejecutar yiic, no tiene que instalar yii como tal, simplemente colóquelo en una carpeta accesible en la web, como se menciona en el archivo Léame que viene. –

Respuesta

12

Como dice la publicación en ese foro, puede ser diferente para diferentes plataformas, o si la aplicación web no está ubicada en la carpeta predeterminada.
Todas estas cosas funcionan para mí:

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); 

Solía ​​yiic para crear la aplicación web, con la configuración predeterminada utilizando el siguiente comando en un terminal, yiic webapp /path/to/webapp
Así que genera la estructura de directorios necesaria para la web aplicación, y también los archivos esqueleto por defecto. Pruébalo y luego mira cómo funciona. Soy nuevo en yii.

Editar:

Esta solución podría haber trabajado para el op, pero la forma baseUrl correctas se puede establecer es mostrado por ecco's answer to this question.

+0

'var_dump (Yii :: app() -> solicitud-> baseUrl); var_dump (Yii :: app() -> getBaseUrl (true)); var_dump (Yii :: app() -> request-> getBaseUrl (true)); 'Da me cadena (0)" ", string (25)" http://www.MYURL.com ", cadena (25) "http://www.MYURL.com" Interesante –

+0

¿Usaste yiic para recrear su proyecto? ¿o las tienes con tu configuración original ?, además 'Yii :: app() -> baseUrl' también funciona. lo que está recibiendo ES interesante –

+0

No comencé nuestro proyecto Yii, así que no sé. Pero le preguntaré a mi equipo. ¿Por qué crees que obtuve el resultado anterior? –

2

Lo más probable es que esté en blanco porque su archivo de arranque (index.php) está en su raíz web. Si no fuera así, deberías ver algún valor. Cambiarlo vencería su propósito.

que usaría como:

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

que para la mayoría de los casos no se cambie la ruta, pero si lo hizo, por ejemplo, decidir poner su aplicación Yii dentro de un subdirectorio, entonces sería portátil. (Simplemente elimine el método http y el nombre de host anterior para que funcione en el mismo servidor en el que está el usuario).

1

Yii :: aplicación() -> baseUrl devuelve sólo una ruta relativa desde la URL a index.php por ejemplo: 127.0.0.1/index.php vuelve '' 127.0.0.1/yii/index.php returns '/ yii'

31

Puede editar /ruta/aplicación/protegida/config/main.php para cambiar el valor predeterminado. Agregue un componente de solicitud y configure baseUrl porperty.

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

contento de haber encontrado esto ... Estaba intentando establecer la URL base en la matriz de nivel superior. Gracias. –

0

Si está utilizando Asistente de URL para generar direcciones URL, tendrá que establecer clave baseUrl al componente urlManager

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

continuación, puede crear URL absoluta mediante el uso de URL Helper como,

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

0

try echo Yii::$app->baseUrl(true)
Tenga en cuenta que el verdadero parámetro es lo que necesita.

Cuestiones relacionadas