我正在使用yii2高级模板改进
不确定是否与问题/解决方案相关但是为了获得该类别我有一个带有一些javascript的表单,在更改时将用户重定向到所选类别。
我有以下代码,允许我访问该类别ID中的帖子我转到localhost:8888 / advanced / article / category?id = 1
问题是,如果我从类别视图中调用模型中的getCategoryName函数,则id参数不会传递给模型函数,因此当使用getCategoryName默认为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');
}
}
答案 0 :(得分:0)
在您的视图中使用类似的内容
$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
答案 1 :(得分:0)
尝试使用此功能。将===更改为==:
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');
}
}