我已經創建了一個動態導航欄菜單,但無法使用參數獲取正確的URL。yii2如何從表
這裏是我的模型代碼的一部分:
public function getNavMenu($menu_id)
{
$menu = Menus::find($menu_id)
->where('menu_id = :menu_id', [':menu_id' => $menu_id])
->orderBy('order')
->all();
// $data=[];
foreach ($menu as $menus) {
if (isset($menus->parent)) {
$submenu[$menus->id] = [
'label' => Yii::t('frontend', ($menus['name'])),
'url' => parse_url($menus['route']),
'options' => [
['class' => 'nav nav-pills nav-stacked'],
['class' => 'nav nav-second-level'],
['class' => 'nav nav-third-level'],
],
];
$data[$menus->parent]['items'] = $submenu;
} else {
# menu
$data[$menus->id] = [
'label' => Yii::t('frontend', ($menus['name'])),
'url' => (substr($menus["route"], 0, 4) == "http")
? $menus["route"]
: [$menus["route"]],
];
}
}
return $data;
}
我的頁面動作:
public function actionView($slug)
{
$this->layout = '@frontend/views/layouts/original/main.php';
$model = Page::find()->where(['slug'=>$slug, 'status'=>Page::STATUS_PUBLISHED])->one();
if (!$model) {
throw new NotFoundHttpException(Yii::t('frontend', 'Page not found'));
}
$viewFile = $model->view ?: 'view';
return $this->render($viewFile, ['model'=>$model]);
}
我的靜態路由是:['label' => Yii::t('frontend', 'About'), 'url' => ['/page/view', 'slug'=>'about']]
如果我在一個列鏈接插入一條記錄以下方式:
/page/view, slug=>about
/page/about
的URL會顯示:http://yii2-web.dev/page/view,slug=about
或http://yii2-web.dev/page/about
和肯定的結果是找不到的。
處理'page/view'請求的動作的簽名是什麼? – topher
你可以給一個解釋,你是什麼意思的簽名的行動? –