2016-12-06 20 views
0

我有以下代碼,我想使用名爲鏈接而不是id的字段查找模型。但是,它似乎沒有產生任何結果。我可以在哪裏弄錯?它返回404如何在Yii中使用除id以外的字段查找記錄2

public function actionView($link) 
    { 
     $model = News::find()->where(['link'=>$link])->all(); 
     return $this->render('view', [ 
      'model' => $model, 
     ]); 
    } 

注:在搜索模式,我曾嘗試添加此:

$query->andFilterWhere([ 
      'id' => $this->id, 
      'link'=>$this->link, 
      'category' => $this->category, 
      'date' => $this->date, 
      'userid' => $this->userid, 
      'featured' => $this->featured, 
     ]); 
+1

檢查網址是否正確 – jithin

+0

我使用搜索友好的URL中包含自定義URL經理[鏈接] HTTP://本地主機/項目/前端/網絡/控制器/視圖/ 1正在工作,但 [鏈接] http:// localhost /項目/前端/網絡/控制器/視圖/鏈接不是 – KMarto

回答

0

對於任何人誰可能會遇到這樣的錯誤,問題是用漂亮的網址後,你需要添加的規則將網址映射格式。 C:\xampp\htdocs\your_project\frontend\config\main.phpurlManager下添加規則,像這樣:

'urlManager' => [ 
     'class' => 'yii\web\UrlManager', 
     // Disable index.php 
     'showScriptName' => false, 
     // Disable r= routes 
     'enablePrettyUrl' => true, 
     'rules' => array(
       '<controller:\w+>/<id:\d+>' => 'news/view', 
      '<controller:\w+>/<link>' => 'news/latestnews', // This is required for $link parameter 
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
      '<controller:\w+>/<action:\w+>/<link>' => 'news/latestnews', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ), 
     ], 
    ], 
0

404意味着你的行動不是由URL管理器中找到。 link參數必須是在URL(http://yourapp/controller/view?link=something),因爲你definded它actionView($link)

請求http://yourapp/controller/view會給你404錯誤。

+0

當我把'http:// localhost/project/frontend/web/controller/view/1',但是當我把'http:// localhost/project/frontend/web/controller/view/parameter' – KMarto

2

如果你想有一個單一的模式,你需要一個(),而不是所有的()

public function actionView($link) 
{ 
    $model = News::find()->where(['link'=>$link])->one(); 
    return $this->render('view', [ 
     'model' => $model, 
    ]); 
} 

一()方法,你retrive只是一個模型,並在你的$模型,你有你需要的數據..

如果起訴所有()騙你你retrive的模型集合,用於訪問的單一模式,你必須設置一個合適的指數例如:

$my_model = $model[0]; 
1

在UrlManager配置你propably有:

'<controller>/<action>/<id:\d+>' => '<controller>/<action>', 

這意味着默認重寫規則使用id作爲PARAM和它必須是數字,所以你不能使用controller/view/link。可以肯定的是,將動作名稱從actionView更改爲actionTest,然後致電URL controller/test?link=linklink

其他解決方案是使用URL這樣的:controller/view?link=linklink

1

的問題是在您的網址

情況1)

http://localhost/projectName/backend/web/controllerName/actionName/username/rushil

給出輸出:未找到(#404)

案例2)

http://localhost/projectName/backend/web/controllerName/actionName/rushil

給出輸出:未找到(#404)

情況3)

http://localhost/projectName/backend/web/controllerName/actionName?username=rushil

這將工作。

解決方法:檢查您的網址,並通過在URL鏈接參數如圖所示的情況下,3

相關問題