2009-07-27 13 views
7

I yii Rahmen und lesen Sie dieses Tutorial nur zu lernen, über yii how to setup urlzum Einrichten url freundlich in yii Rahmen automatisch

aber ich habe keine Ahnung, nehme ich an 10-Controller haben, sollte ich einen nach dem anderen Controller in der Config definieren Datei ? Gibt es eine bessere Möglichkeit, URL-freundliche wie www.yoursite.com/yourController/yourAction/yourID für alle Controller einzurichten?

Ich glaube Codeigniter tat das automatisch ... wie wär's mit yii?

Antwort

19

In /protected/config/main.php hinzufügen ..

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

In Ihrem Web-Root einer .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

Ich wünschte, ich 10 Stimmen für diese Antwort geben könnte, als zu finden, wäre es mir eine Stunde des Suchens gespeichert hat und kämpfen, um es an der Arbeit richtig. –

+0

Ich folgte als deine Antwort. aber ich denke, ich habe kein Glück. Ich entferne den urlManager, wenn ich eine App mit yii in [app root] /protected/config/main.php erzeuge. Und ich füge deine .htaccess in mein [app root] /. Htaccess ein. aber ich habe den Fehler 404 bekommen. Bitte helfen Sie mir zu lösen. –

+0

@tharso Ich bekam den 404 Fehler und meine .htaccess Datei war nicht im root, sondern im geschützten Ordner. Ich habe es zu root hochgezogen. (selbe Stelle wie index.php) und es hat richtig funktioniert. – albertski

1

Es gibt auch automatische URL-Generierung in Yii. Zum Beispiel schreiben Sie einfach in Ihrer Vorlage solche URL ohne manuelle Route:

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

und ausgelassene URL wird wie folgt sein:

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

Dann in unserem Handeln actionView() -Methode verwenden wir diese Parameter:

... 
$id=$_GET['id']; 
$var=$_GET['var']; 
...