我正在使用yii2高级模板改进的
不确定是否与问题/解决方案相关,但为了进入类别,我有一个带有一些javascript的表单,在更改时会将用户重定向到所选类别。
我有以下代码,可以访问我转到localhost:8888/advanced/article/category的类别id中的帖子?id=1
目前的问题是,如果我从类别视图中调用模型中的getCategoryName函数,则id参数不会传递给模型函数,因此,当使用getCategoryNames时,默认为sport。
public function actionCategory($id)
{
$model = new Article();
$searchModel = new ArticleSearch();
$query = Article::find()
->where(['category' => $id]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
return $this->render('category', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model'=>$model,
]);
}
然后,在我的视图中,我使用以下内容,在一定程度上可以执行模型函数,但我不确定如何将参数/当前类别id传递给模型函数。下面的代码适用于_index&在单个文章视图中。
<?= $model->CategoryName ?>
这是我的模型函数
public function getCategoryName($category = null)
{
$category = (empty($category)) ? $this->category : $category ;
if ($category === self::CATEGORY_ECONOMY)
{
return Yii::t('app', 'Economy');
}
elseif ($category === self::CATEGORY_SOCIETY)
{
return Yii::t('app', 'Society');
}
else
{
return Yii::t('app', 'Sport');
}
}
在您的视图中使用类似的东西
$request = Yii::$app->request;
$id = $request->get('id');//get id from request or change according to your requirement
echo $model->getCategoryName($id);//full method name here
试着使用这个。更改===到===:
public function getCategoryName($category = null)
{
$category = (empty($category)) ? $this->category : $category ;
if ($category == self::CATEGORY_ECONOMY)
{
return Yii::t('app', 'Economy');
}
elseif ($category == self::CATEGORY_SOCIETY)
{
return Yii::t('app', 'Society');
}
else
{
return Yii::t('app', 'Sport');
}
}