Codeigniter可防止重复数据

时间:2015-06-24 19:40:17

标签: php html css codeigniter

我有一个带2个功能的控制器:

  1. 图像
  2. 视频
  3. 我创建了一个headerfooter模板来加载我的视图,我想将css样式表设置为用户首选设置“light”或“dark”。所以例如用户将他们的主题设置为黑暗我想用dark.css更新header视图,但我目前正在重复我的代码,我想阻止它。我不得不这样做两次。一次为图像:

    public function images() 
    {
        //is the user logged in? if not redirect to login page
        if ( ! $this->my_auth->logged_in())
        {
          redirect('auth/login', 'refresh');
        }
    
        //set the view data
        $data['title'] = 'Upload Images | My Idea Cloud';
        $data['heading'] = 'Upload Images';
        $data['attributes'] = array(
          'class' => 'dropzone',
          'id' => 'image-dropzone'                
        );
    
        // get users style and set the correct style sheet
        $user_data = $this->my_auth->user()->row();
    
        if ($user_data->style == 'light')
        {
            $data['flat_css'] = 'flat-ui-light.css';
            $data['navbar_class'] = 'navbar-default';
            $data['footer_class'] = 'bottom-menu-default';
            $data['custom_css'] = 'custom-light.css';
            $data['dropzone_css'] = 'dropzone-light.css';
        }
        elseif ($user_data->style == 'dark')
        {
            $data['flat_css'] = 'flat-ui-dark.css';
            $data['navbar_class'] = 'navbar-inverse';
            $data['footer_class'] = 'bottom-menu-inverse';
            $data['custom_css'] = 'custom-dark.css';
            $data['dropzone_css'] = 'dropzone-dark.css';
        }
        else
        {
            $data['flat_css'] = 'flat-ui-dark.css';
            $data['navbar_class'] = 'navbar-inverse';
            $data['footer_class'] = 'bottom-menu-inverse';
            $data['custom_css'] = 'custom-dark.css';
            $data['dropzone_css'] = 'dropzone-dark.css';
        }
    
    
        //load the views    
        $this->load->view('templates/frontend/front_header', $data);
        $this->load->view('templates/frontend/front_navbar');
        $this->load->view('frontend/upload_images', $data);
        $this->load->view('templates/frontend/front_footer', $data);
    

    一次用于视频功能

    public function videos() 
    {
        if ( ! $this->my_auth->logged_in())
        {
          redirect('auth/login', 'refresh');
        }
    
        $data['title'] = 'Upload Videos| My Idea Cloud';
        $data['heading'] = 'Upload Videos';
        $data['attributes'] = array(
          'class' => 'dropzone',
          'id' => 'video-dropzone'                
        );
    
        // get users style and set the correct style sheet
        $user_data = $this->my_auth->user()->row();
    
        if ($user_data->style == 'light')
        {
            $data['flat_css'] = 'flat-ui-light.css';
            $data['navbar_class'] = 'navbar-default';
            $data['footer_class'] = 'bottom-menu-default';
            $data['custom_css'] = 'custom-light.css';
            $data['dropzone_css'] = 'dropzone-light.css';
        }
        elseif ($user_data->style == 'dark')
        {
            $data['flat_css'] = 'flat-ui-dark.css';
            $data['navbar_class'] = 'navbar-inverse';
            $data['footer_class'] = 'bottom-menu-inverse';
            $data['custom_css'] = 'custom-dark.css';
            $data['dropzone_css'] = 'dropzone-dark.css';
        }
        else
        {
            $data['flat_css'] = 'flat-ui-dark.css';
            $data['navbar_class'] = 'navbar-inverse';
            $data['footer_class'] = 'bottom-menu-inverse';
            $data['custom_css'] = 'custom-dark.css';
            $data['dropzone_css'] = 'dropzone-dark.css';
        }
    
        $this->load->view('templates/frontend/front_header', $data);
        $this->load->view('templates/frontend/front_navbar');
        $this->load->view('frontend/upload_videos', $data);
        $this->load->view('templates/frontend/front_footer', $data);      
    

    还有更多的代码,所以我不将两者结合起来。我只显示部分代码。

    有人可以指导我如何整合我的代码吗?

1 个答案:

答案 0 :(得分:1)

代码中没有使用elseif块,如果您提取要通过数据传递的公共数据,这是我能想到的最小化尝试。

要应用此功能,请从代码中删除ifelseifelse块并将其放置,

if($user_data->style == 'light')
{
    $intensity = 'light';
    $default = 'default';
}
else
{
    $intensity = 'dark';
    $default = 'inverse';
}

$data['flat_css']     = "flat-ui-{$intensity}.css";
$data['navbar_class'] = "navbar-{$default}";
$data['footer_class'] = "bottom-menu-{$default}";
$data['custom_css']   = "custom-{$intensity}.css";
$data['dropzone_css'] = "dropzone-{$intensity}.css";

如果您想让它更具通用性,请在与

相同的控制器中创建一个功能
function apply(&$data,$style)
{
    if($style == 'light')
    {
        $intensity = 'light';
        $default = 'default';
    }
    else
    {
        $intensity = 'dark';
        $default = 'inverse';
    }

    $data['flat_css']     = "flat-ui-{$intensity}.css";
    $data['navbar_class'] = "navbar-{$default}";
    $data['footer_class'] = "bottom-menu-{$default}";
    $data['custom_css']   = "custom-{$intensity}.css";
    $data['dropzone_css'] = "dropzone-{$intensity}.css";
}

并用一行代替我的答案中显示的第一个代码块

$this->apply($data,$user_data->style);

您将获得$data

中定义的五个变量