actionIndex 中的参数给出错误 500,未定义的变量:YII 中的 id
params in actionIndex giving Error 500, Undefined variable: id in YII
我已经在我的 actionView 和 actionIndex 中添加了下面的代码。代码在 actionView 中使用时工作正常,但在 actionIndex 上使用时抛出错误 500,未定义变量:id。为什么变量 id 仅在 actionIndex 上未定义?
actionView ...
public function actionView($id)
{
$textDataProvider=new CActiveDataProvider('Text', array(
'criteria'=>array(
'condition'=>'articles_id=:articlesId',
'params'=>array(':articlesId'=>$this->loadModel($id)->id),
),
'pagination'=>array(
'pageSize'=>1,
),
));
$this->render('view',array(
'model'=>$this->loadModel($id),
'textDataProvider'=>$textDataProvider,
));
}
相同的代码,仅对 actionIndex 进行了小的更改 ...
public function actionIndex()
{
//get text information
$textDataProvider=new CActiveDataProvider('Text', array(
'criteria'=>array(
'condition'=>'articles_id=:articlesId',
'params'=>array(':articlesId'=>$this->loadModel($id)->id),
'offset'=>'0',
'limit' => '1',
),
));
//get criteria
$criteria = new CDbCriteria();
//$criteria->condition = 'country = :country';
//$criteria->params = array (':country'=> $_GET['country']);
$criteria->order = 'create_time desc';
//get count
$count = Articles::model()->count($criteria);
//pagination
$pages = new CPagination($count);
$pages->setPageSize(10);
$pages->applyLimit($criteria);
//result to show on page
$result = Articles::model()->findAll($criteria);
$dataProvider = new CArrayDataProvider($result);
$this->render('index', array(
'dataProvider' => $dataProvider,
'pages' => $pages,
'textDataProvider'=>$textDataProvider,
));
}
我已经对 actionIndex 进行了更改以尝试获取 id,如下所述。但是我还是能拿到id。
actionIndex ...
public 函数 actionIndex()
{
//get criteria
$criteria = new CDbCriteria();
//$criteria->condition = 'country = :country';
//$criteria->params = array (':country'=> $_GET['country']);
$criteria->order = 'create_time desc';
//get count
$count = Articles::model()->count($criteria);
//pagination
$pages = new CPagination($count);
$pages->setPageSize(10);
$pages->applyLimit($criteria);
//result to show on page
$result = Articles::model()->findAll($criteria);
$dataProvider = new CArrayDataProvider($result);
//$arr = array();
foreach($result as $id)
{
$text_id = $id->id;
}
//get text information
$criteria2=new CDbCriteria(array(
'order'=>'id desc',
'condition'=>'articles_id='.$text_id,
));
$textProvider=new CActiveDataProvider('Text', array(
'criteria'=>$criteria2,
));
$this->render('index', array(
'dataProvider' => $dataProvider,
'pages' => $pages,
'textProvider'=>$textProvider,
));
}
很明显,您在使用 $id
时没有定义它!在 actionView
中,您有 $id
作为参数,但在 actionIndex
中您没有。所以 'params'=>array(':articlesId'=>$this->loadModel($id)
导致 Undefined variable 错误。
为了解决这个问题,你也必须将 $id
传递给你的 actionIndex
。
我已经在我的 actionView 和 actionIndex 中添加了下面的代码。代码在 actionView 中使用时工作正常,但在 actionIndex 上使用时抛出错误 500,未定义变量:id。为什么变量 id 仅在 actionIndex 上未定义?
actionView ...
public function actionView($id)
{
$textDataProvider=new CActiveDataProvider('Text', array(
'criteria'=>array(
'condition'=>'articles_id=:articlesId',
'params'=>array(':articlesId'=>$this->loadModel($id)->id),
),
'pagination'=>array(
'pageSize'=>1,
),
));
$this->render('view',array(
'model'=>$this->loadModel($id),
'textDataProvider'=>$textDataProvider,
));
}
相同的代码,仅对 actionIndex 进行了小的更改 ...
public function actionIndex()
{
//get text information
$textDataProvider=new CActiveDataProvider('Text', array(
'criteria'=>array(
'condition'=>'articles_id=:articlesId',
'params'=>array(':articlesId'=>$this->loadModel($id)->id),
'offset'=>'0',
'limit' => '1',
),
));
//get criteria
$criteria = new CDbCriteria();
//$criteria->condition = 'country = :country';
//$criteria->params = array (':country'=> $_GET['country']);
$criteria->order = 'create_time desc';
//get count
$count = Articles::model()->count($criteria);
//pagination
$pages = new CPagination($count);
$pages->setPageSize(10);
$pages->applyLimit($criteria);
//result to show on page
$result = Articles::model()->findAll($criteria);
$dataProvider = new CArrayDataProvider($result);
$this->render('index', array(
'dataProvider' => $dataProvider,
'pages' => $pages,
'textDataProvider'=>$textDataProvider,
));
}
我已经对 actionIndex 进行了更改以尝试获取 id,如下所述。但是我还是能拿到id。
actionIndex ...
public 函数 actionIndex() {
//get criteria
$criteria = new CDbCriteria();
//$criteria->condition = 'country = :country';
//$criteria->params = array (':country'=> $_GET['country']);
$criteria->order = 'create_time desc';
//get count
$count = Articles::model()->count($criteria);
//pagination
$pages = new CPagination($count);
$pages->setPageSize(10);
$pages->applyLimit($criteria);
//result to show on page
$result = Articles::model()->findAll($criteria);
$dataProvider = new CArrayDataProvider($result);
//$arr = array();
foreach($result as $id)
{
$text_id = $id->id;
}
//get text information
$criteria2=new CDbCriteria(array(
'order'=>'id desc',
'condition'=>'articles_id='.$text_id,
));
$textProvider=new CActiveDataProvider('Text', array(
'criteria'=>$criteria2,
));
$this->render('index', array(
'dataProvider' => $dataProvider,
'pages' => $pages,
'textProvider'=>$textProvider,
));
}
很明显,您在使用 $id
时没有定义它!在 actionView
中,您有 $id
作为参数,但在 actionIndex
中您没有。所以 'params'=>array(':articlesId'=>$this->loadModel($id)
导致 Undefined variable 错误。
为了解决这个问题,你也必须将 $id
传递给你的 actionIndex
。