我有一些代码,我不断重写在我的网站上的不同页面,所以我不断重写代码一遍又一遍在每个视图文件。
我想知道我如何改变下面的代码,这样我就可以有下面的代码在只有一个文件。可以在视图文件中调用这个文件吗?
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
。