2016-02-04 37 views
-1

我在多个帖子网站上工作,会有多个帖子,我需要做什么,我需要动态seo友好的网址与帖子标题,
假设我创建了一个像"sachin tendulkar"然后在yii2它的url应该是像http://domain.com/sachin-tendulkar我怎么能做到这一点在url?有没有人有更好的解决方案?
我如何在yii2中管理这个问题,如果有任何例子,然后真的很感激。我尝试了谷歌搜索,但没有得到任何适当的解决方案如何在yii2中为动态标题制作seo友好的网址

回答

2

使用SluggableBehavior http://www.yiiframework.com/doc-2.0/yii-behaviors-sluggablebehavior.html

与你的职位表创建新列,并在您的ActiveRecord添加以下代码:

public function behaviors() 
    { 
     return [ 
      [ 
       'class' => yii\behaviors\SluggableBehavior::className(), 
       'attribute' => 'title', 
       // 'slugAttribute' => 'slug', 
      ], 
     ]; 
    } 

帖子的标题将在塞自动创建。

之后,在你的控制器的操作方法中使用这个slu get获得正确的职位。例如:

class PostController extends Controller 
{ 
    public function actionView($slug) 
    { 
     $post = Post::findOne(['slug'=>$slug]); 
     ..... 
    } 
} 

而且,漂亮的URL,你应该设置在urlManager部分enablePrettyUrl财产在你的配置文件(http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#using-pretty-urls),并设置规则类似:

'urlManager' => [ 
    'enablePrettyUrl'=>true, 
    'showScriptName'=>false, 
    .... 
    'rules' => [ 
     'post/<slug:[a-zA-Z0-9_ -]+>' => 'post/view', 
      .... 
    ], 
]