如何在 Yii2 的 url 上使用文章名称?
How to use article name on the url on Yii2?
我需要在 Yii2 上使用 url 上的文章名称,类似于 http://example.com/article?id=1, just replace id=1 to article_name, like http://example.com/article/article_name 或者是。
这是我的控制器代码-
$model = Articles::find()->orderBy(['id' => SORT_DESC])->one();
查看-
<?= Html::a('<b>Read more ...</b>', ['article-details','id' => $model->id], ['target'=>'_blank']) ?>
提前致谢
你有两种方式
一个更改控制器中的相关操作,在相关函数声明中更改 id 和 name
或者以名称作为参数声明一个新动作
public function findModelName($article_name)
{
$model = Article::findOne(['name'=> $article_name]);
........ your related code
}
您可以通过这种方式按名称找到模型
Article::findOne(['name'=> $article_name]);
您可以使用 yii2 的 sluggable 行为 Refer this。
有几个步骤。
您必须添加以下 urlManager 规则:
'article/<slug>' => 'article/view',
您应该像这样在您的视图文件中构建 url :
\yii\helpers\Url::to(['article/view', 'slug'=>$model->title])
或
\yii\helpers\Url::to(['article/'.$model->title]);
在你的行动中
public function actionArticle($slug){
$model = Articles::find()->where(["title"=>$slug])->orderBy(['id' => SORT_DESC])->one();
//and other code
}
此外,您的文章标题必须在 url.You 期间有效,可以通过修剪空格等方式轻松实现,但您也可以添加 url 一些标识 属性。或为每篇文章添加列存储的唯一 slugs
我需要在 Yii2 上使用 url 上的文章名称,类似于 http://example.com/article?id=1, just replace id=1 to article_name, like http://example.com/article/article_name 或者是。
这是我的控制器代码-
$model = Articles::find()->orderBy(['id' => SORT_DESC])->one();
查看-
<?= Html::a('<b>Read more ...</b>', ['article-details','id' => $model->id], ['target'=>'_blank']) ?>
提前致谢
你有两种方式
一个更改控制器中的相关操作,在相关函数声明中更改 id 和 name
或者以名称作为参数声明一个新动作
public function findModelName($article_name)
{
$model = Article::findOne(['name'=> $article_name]);
........ your related code
}
您可以通过这种方式按名称找到模型
Article::findOne(['name'=> $article_name]);
您可以使用 yii2 的 sluggable 行为 Refer this。 有几个步骤。 您必须添加以下 urlManager 规则:
'article/<slug>' => 'article/view',
您应该像这样在您的视图文件中构建 url :
\yii\helpers\Url::to(['article/view', 'slug'=>$model->title])
或
\yii\helpers\Url::to(['article/'.$model->title]);
在你的行动中
public function actionArticle($slug){
$model = Articles::find()->where(["title"=>$slug])->orderBy(['id' => SORT_DESC])->one();
//and other code
}
此外,您的文章标题必须在 url.You 期间有效,可以通过修剪空格等方式轻松实现,但您也可以添加 url 一些标识 属性。或为每篇文章添加列存储的唯一 slugs