А зачем вы переопределяется createUrl?
Вы не умеете правила для urlManager в конфиге составлять?
Yii2 отлично поддерживает ЧПУ, в том числе и для записей в блогах/новостей.
Конфиг:
'blog/<slug:[\w-_]+>' => 'blog/view',
Формирование ссылки на пост:
<?= Url::to(['blog/view', 'slug' => $post->slug]) ?>
Контроллер:
public function actionView($slug)
{
$post = Post::findBySlug($slug);
if($post === null) {
throw new NotFoundHttpException;
}
return $this->render('view', [
'post' => $post
]);
}
В модели Post используется sluggable behavior