Loveorigami писал(а):
В моем случае (да и в практическом) - нет.
1.
поскольку в первом параметре мне нужен id записи.
Для того, чтобы построит роут
Код: Выделить всё
site.ru/post/(num:)-(any:) => post/actionView/id
например -
Код: Выделить всё
http://new.loveorigami.info/world/44572-samus-aran
меняешь или номер, или slug - получаешь 404
2. В твоем варианте первый slug будет 0-slug, второй - 1-slug и т.п
3. нет возможности задать свой уникальный...
и так теперь всё встало на свои места
во первых если тебе нужно чтоб присутствовал йди в ссылке то тогда нужно именно с ним и работать! запросы по йди будут по идее быстрее работать! а слуг чисто как сеошная штука будет и доп проверка!
делай слуг не уникальным
в модель добавим следующее
Код: Выделить всё
public function behaviors()
{
return [
[
'class' => yii\behaviors\SluggableBehavior::className(),
'slugAttribute' => 'slug',
'value' => function($event){
if(!empty($event->sender->slug))
return $event->sender->slug;
return Inflector::slug($event->sender->title);
},
],
];
}
в urlManager добавим правило чтоб было так как ты хочешь
Код: Выделить всё
[
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'post/<id:\d+>-<slug:\w>' => 'post/view'
],
],
],
]
ссылка формируется
Код: Выделить всё
Url::to(['post/view', 'id'=>$model->id, 'slug' => $model->slug])
и будет тебе счастье!