2011-09-30 18 views
7

Khi tôi làmLàm thế nào để Thiết lập cơ sở URL trong Yii Khung

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

tôi nhận được một chuỗi rỗng. Một bài đăng trên diễn đàn Yii cho biết this is blank by default. Làm cách nào để thay đổi giá trị mặc định để tôi có thể sử dụng URL tuyệt đối?

+0

phiên bản yii nào? và thư mục nơi dự án là? nó là một webapp? bạn có sử dụng yiic không? –

+0

@DroidUser Yii Phiên bản 1.1.7. Cây thư mục của tôi là: '/ htdocs/protected/(tệp ứng dụng web)' '/ lib/yii/(tập tin lõi yii)' Đây là một ứng dụng web. Tôi đã không sử dụng yiic. Có cách nào để thiết lập baseUrl bằng cách chạy nó? Tôi đã không thực hiện cài đặt ban đầu của khung công tác Yii. –

+0

trong câu trả lời của tôi tôi đã đề cập đến làm thế nào để chạy yiic, bạn không cần phải cài đặt yii như vậy, chỉ cần đặt nó trong một thư mục có thể truy cập web, như đã đề cập trong readme mà đến. –

Trả lời

12

Vì bài đăng trong diễn đàn đó cho biết, nó có thể khác với các nền tảng khác nhau hoặc nếu ứng dụng web không nằm trong thư mục mặc định.
Tất cả những điều này làm việc cho tôi:

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

tôi đã sử dụng yiic để tạo ra các ứng dụng web, với các thiết lập mặc định bằng cách sử dụng lệnh sau đây trong một thiết bị đầu cuối, yiic webapp /path/to/webapp
Vì vậy mà tạo ra cấu trúc thư mục cần thiết cho các trang web ứng dụng và các tệp bộ xương mặc định. Hãy thử nó và sau đó xem nó hoạt động như thế nào. Tôi mới đến yii.

Edit:

Giải pháp này có thể làm việc cho op, nhưng baseUrl cách chính xác có thể được thiết lập được thể hiện bằng ecco's answer to this question.

+0

'var_dump (Yii :: app() -> request-> baseUrl); var_dump (Yii :: app() -> getBaseUrl (true)); var_dump (Yii :: app() -> request-> getBaseUrl (true)); 'Cung cấp cho tôi chuỗi (0)" ", chuỗi (25)" http://www.MYURL.com ", chuỗi (25) "http://www.MYURL.com" Thú vị –

+0

vì vậy bạn có sử dụng yiic để tạo lại dự án của mình không? hoặc u có được với cấu hình ban đầu của bạn ?, cộng với 'Yii :: app() -> baseUrl' cũng hoạt động. những gì bạn đang nhận được là thú vị –

+0

Tôi đã không bắt đầu dự án Yii của chúng tôi vì vậy tôi không biết. Nhưng tôi sẽ hỏi nhóm của tôi. Tại sao bạn cho rằng tôi nhận được đầu ra ở trên? –

2

Rất có thể là do tệp bootstrap của bạn (index.php) ở gốc web của bạn. Nếu không, bạn sẽ thấy một số giá trị. Thay đổi nó sẽ đánh bại mục đích của nó.

Bạn sẽ sử dụng như:

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

mà đối với hầu hết các trường hợp sẽ không thay đổi đường dẫn, nhưng nếu bạn đã làm, nói rằng, quyết định đưa ứng dụng Yii của bạn bên trong một thư mục con, sau đó nó sẽ là cầm tay. (Chỉ cần xóa phương thức http và tên máy chủ ở trên để làm cho nó hoạt động trên cùng một máy chủ mà người dùng đang bật.)

1

Yii :: app() -> baseUrl trả về chỉ là một đường dẫn tương đối từ url để index.php ví dụ: 127.0.0.1/index.php lợi nhuận '' 127.0.0.1/yii/index.php lợi nhuận '/ yii'

31

Bạn có thể sửa /path/to/application/protected/config/main.php để thay đổi giá trị mặc định. Thêm một thành phần yêu cầu và cấu hình porperty baseUrl.

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

vui vì tôi đã tìm thấy điều này .... Tôi đã cố gắng đặt url cơ sở trong mảng cấp cao nhất. Cảm ơn. –

0

Nếu bạn đang sử dụng Url helper để tạo ra các url, bạn sẽ cần phải thiết lập chính baseUrl để phần UrlManager

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

Sau đó, bạn có thể tạo url tuyệt đối bằng cách sử dụng Url helper như,

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

0

thử echo Yii::$app->baseUrl(true)
Lưu ý rằng thông số thực sự là những gì cần thiết.

Các vấn đề liên quan