如何在yii2中为动态标题创建seo友好url

如何在yii2中为动态标题创建seo友好url,yii2,yii2-advanced-app,yii2-basic-app,Yii2,Yii2 Advanced App,Yii2 Basic App,我在多个帖子网站上工作,将有多个帖子,我需要做的是,我需要动态seo友好的url和帖子标题, 假设我创建了一个类似“sachin tendulkar”的帖子,那么在yii2中,它的url应该类似http://domain.com/sachin-tendulkar如何在url中执行此操作?有谁有更好的解决方案吗我如何在yii2中处理此问题,如果有任何示例,我将非常感谢。我试着用谷歌搜索,但没有找到任何合适的解决办法 在包含帖子的表中创建新列,并在ActiveRecord中添加以下代码: publi

我在多个帖子网站上工作,将有多个帖子,我需要做的是,我需要动态seo友好的url和帖子标题,
假设我创建了一个类似
“sachin tendulkar”
的帖子,那么在yii2中,它的url应该类似
http://domain.com/sachin-tendulkar
如何在url中执行此操作?有谁有更好的解决方案吗
我如何在yii2中处理此问题,如果有任何示例,我将非常感谢。我试着用谷歌搜索,但没有找到任何合适的解决办法

在包含帖子的表中创建新列,并在ActiveRecord中添加以下代码:

public function behaviors()
    {
        return [
            [
                'class' => yii\behaviors\SluggableBehavior::className(),
                'attribute' => 'title',
                // 'slugAttribute' => 'slug',
            ],
        ];
    }
帖子的标题将在slug中自动创建

之后,在控制器中的动作方法中使用此slug以获得正确的帖子。例如:

class PostController extends Controller
{
    public function actionView($slug)
    {
        $post = Post::findOne(['slug'=>$slug]);
        .....
    }
}
此外,对于pretty url,您应该在配置文件()的urlManager部分中设置enablePrettyUrl属性,并设置如下规则:

'urlManager' => [
    'enablePrettyUrl'=>true,
    'showScriptName'=>false,
    ....
    'rules' => [
         'post/<slug:[a-zA-Z0-9_ -]+>' => 'post/view',
          ....
    ],
]
'urlManager'=>[
“enablePrettyUrl”=>true,
'showScriptName'=>false,
....
“规则”=>[
'发布/'=>'发布/查看',
....
],
]