YII PHP notice未定义的索引:title

时间:2014-07-14 11:50:39

标签: php yii

我是YII的新手,我在网站加载时遇到错误

PHP notice
Undefined index: title
PATH\TO\WEBSITE\protected\controllers\SiteController.php(35)

以下是代码。

/**
25      * This is the default 'index' action that is invoked
26      * when an action is not explicitly requested by users.
27      */
28     public function actionIndex()
29     {
30         // renders the view file 'protected/views/site/index.php'
31         // using the default layout 'protected/views/layouts/main.php'
32         $criteria = new CDbCriteria;
33 
34         $criteria->condition = "title LIKE :title";
35         $criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';
36 
37         $criteria->addCondition("category_id LIKE :category_id");
38         if( !is_null($_GET['category_id'] ) && ( $_GET['category_id'] != "" ) ) {
39             $criteria->params[':category_id'] = (int)$_GET['category_id'];
40         } else {
41             $criteria->params[':category_id'] = '%';
42         }
43         
44         if( $_GET['hightRate'] == 1 ) {
45             $criteria->addCondition("user_id IN (SELECT id FROM `yb_user` WHERE rating >= 8)");
46         }

如何修复此错误并在localhost中运行我的网站?

2 个答案:

答案 0 :(得分:0)

首先定义数组:

$criteria->params = array();

然后你可以添加

$criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';

更新

这也可能是因为php中的错误报告级别,请尝试将其更改为

if(isset( $_GET['title'] )) // check if title is available before using it
    $criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';

答案 1 :(得分:0)

如果这是导致错误的第35行:

$criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';

我认为这是导致$_GET['title']的唯一选择。

您不应该信任$_GET数据。尝试重写这样的代码:

if(isset($_GET['title'])){
        $criteria->condition = "title LIKE :title";
        $criteria->params[':title'] =  '%' . trim($_GET['title']) . '%';
}

<强> N.B。你不应该在控制器中做这种繁重的操作。在模型上执行数据库操作。