2009-07-27 31 views
7

Tôi chỉ học tập khuôn khổ yii và đọc hướng dẫn này về yii how to setup urllàm thế nào để thiết lập url thân thiện trong khuôn khổ yii tự động

nhưng tôi không có ý tưởng, giả sử tôi có 10 bộ điều khiển, tôi cần xác định từng người một bộ điều khiển trong cấu hình tập tin ? có cách nào tốt hơn để thiết lập url thân thiện như www.yoursite.com/yourController/yourAction/yourID cho tất cả bộ điều khiển không?

Tôi nghĩ rằng codeigniter đã làm điều đó tự động ... làm thế nào về yii?

Trả lời

19

Trong /protected/config/main.php thêm ..

'urlManager'=>array(
     'urlFormat'=>'path', 
     'showScriptName' => false,  
     ), 
    ), 

Trong rễ web của bạn một .htaccess ..

Options +FollowSymLinks 
IndexIgnore */* 
RewriteEngine on 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# otherwise forward it to index.php 
RewriteRule . index.php 
+1

Tôi ước gì tôi có thể cung cấp 10 phiếu bầu cho câu trả lời này, như việc tìm kiếm nó sẽ có lưu tôi một giờ tìm kiếm và đấu tranh để có được nó để làm việc đúng. –

+0

Tôi đã làm theo câu trả lời của bạn. nhưng tôi nghĩ tôi không có may mắn. Tôi uncomment urlManager khi tôi tạo ra một ứng dụng với yii tại [app root] /protected/config/main.php. Và tôi thêm .htaccess vào [app root]/.htaccess của tôi. nhưng tôi gặp lỗi 404. xin giúp tôi giải quyết. –

+0

@tharsoe Tôi đã nhận được lỗi 404 và tệp .htaccess của tôi không nằm trong thư mục gốc mà nằm trong thư mục được bảo vệ. Tôi đã chuyển nó lên root. (cùng một vị trí như index.php) và nó bắt đầu hoạt động chính xác. – albertski

1

Cũng có tự động tạo URL trong Yii. Ví dụ chỉ cần viết trong mẫu của bạn tại URL tương tự mà không tuyến đường thủ công:

<?php echo CHtml::link('topic title',array('topic/view','id'=>$topic->id,'var'=>'123')); ?> 

Và URL trả lại sẽ được như sau:

/topic/view/id/1/var/123 

Sau đó, trong phương pháp của chúng tôi hành động ActionView(), chúng tôi sử dụng các thông số:

... 
$id=$_GET['id']; 
$var=$_GET['var']; 
... 
Các vấn đề liên quan