如何将数据存储在单个文件中,并在视图文件中调用它


How to store data in a single file and call it in view file?

我有一些代码,我不断重写在我的网站上的不同页面,所以我不断重写代码一遍又一遍在每个视图文件。

我想知道我如何改变下面的代码,这样我就可以有下面的代码在只有一个文件。可以在视图文件中调用这个文件吗?

if ($model->type == 1) {
    $title = __('Sports');
    $icon_activity = 'icon_set_2_icon-117';
}
if ($model->type == 2) {
    $title = __('Cooking lesson');
    $icon_activity = 'icon_set_1_icon-14';
}
if ($model->type == 3) {
    $title = __('Guided tour');
    $icon_activity = 'icon_set_1_icon-30';
}
if ($model->type == 4) {
    $title = __('Language conversation');
    $icon_activity = 'icon_set_1_icon-20';
}

在视图文件中编写逻辑不是一个好的做法。相反,您可以创建一个类并在控制器的操作中调用它。例如,我创建这样一个类: Tools.php :

<?php
class Tools{
    public function initialize($type){
         $title = "";
         $icon_activity = "";
         if ($type == 1) {
             $title = __('Sports');
             $icon_activity = 'icon_set_2_icon-117';
         }
         if ($type == 2) {
             $title = __('Cooking lesson');
             $icon_activity = 'icon_set_1_icon-14';
         }
         if ($type == 3) {
            $title = __('Guided tour');
            $icon_activity = 'icon_set_1_icon-30';
         }
         if ($type == 4) {
            $title = __('Language conversation');
            $icon_activity = 'icon_set_1_icon-20';
         }
        return array("title"=>$title, "icon_activity"=>$icon_activity);
    }
}

现在,在你的动作中你可以这样做:

public function actionTest(){
      ...
      $tools = new Tools();
      $result = $tools->initialize($model->type)
      $this->render("yourViewName", array(
            "title" => $result['title'],
            "icon_activity" => $result['icon_activity']
      ));
}

最后,您可以在视图页面中使用$title$icon_activity