2014-09-02 3 views
1

Я ударил кирпичную стену по моему проекту codeigniter.foreach issue select form

Я могу обновить свою тему/шаблон до базы данных с помощью формы в моих настройках. Я могу сделать это ОК, а темы/шаблоны отображаются в форме «ОК».

Но $templates == $config_template не отображается текущая тема/шаблон, который выбран.

Я не уверен, что добавить для части контроллера и модели, чтобы она могла отображать текущую тему/шаблон из базы данных в качестве первой.

Вот что я сделал до сих пор.

Контроллер

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Settings extends MX_Controller { 

    public function index() { 

    $this->document->setTitle($this->lang->line('heading_title')); 

     $data['action'] = site_url('admin/settings'); 

     $data['logout'] = site_url('admin/logout'); 

     $data['home'] = site_url('admin/dashboard'); 

     $data['cancel'] = site_url('admin/dashboard'); 

     $this->load->model('admin/setting/model_setting_store'); 

     $this->model_setting_store->config_template(); 

     $data['templates'] = array(); 

     $directories = glob(APPPATH . 'modules/catalog/views/theme/*', GLOB_ONLYDIR); 

     foreach ($directories as $directory) { 
      $data['templates'][] = basename($directory); 
     } 


     $this->load->library('form_validation'); 

     $this->form_validation->set_rules('config_meta_title', 'Website Title'); 
     $this->form_validation->set_rules('config_meta_description', 'Description'); 
     $this->form_validation->set_rules('config_meta_keyword', 'Keywords'); 
     $this->form_validation->set_rules('config_template', 'Template'); 

    if ($this->form_validation->run() == FALSE) { 

     return $this->load->view('setting/settings', $data); 

    } else { 

     redirect('admin/dashboard'); 

    } 

    } 

} 

Модель

<?php 

class Model_setting_store extends CI_Model { 

    function config_template() { 
     $data = array(
      'setting_id' => "10", 
      'website_id' => "0", 
      'group' => "config", 
      'key' => "config_template", 
      'value' => $this->input->post('config_template') 
     ); 

     $this->db->update('setting', $data); 
    } 

} 

Посмотреть

<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-setting" class="form-horizontal"> 
<ul class="nav nav-tabs" role="tablist" id="myTab"> 
    <li class="active"><a href="#tab-general" role="tab" data-toggle="tab"><?php echo $tab_general;?></a></li> 
    <li><a href="#tab-store" data-toggle="tab"><?php echo $tab_store; ?></a></li> 
    <li><a href="#tab-server" data-toggle="tab"><?php echo $tab_server; ?></a></li> 
</ul> 

<div class="tab-content"> 
<div class="tab-pane active" id="tab-general"></div> 

<div class="tab-pane" id="tab-store"> 
<div class="form-group"> 
<label class="col-sm-2 control-label" for="input-template"><?php echo $entry_template; ?></label> 
<div class="col-sm-10"> 
<select name="config_template" id="input-template" class="form-control"> 
<?php foreach ($templates as $template) { ?> 
<?php if ($template == $config_template) { ?> 
<option value="<?php echo $template; ?>" selected="selected"><?php echo $template; ?></option> 
<?php } else { ?> 
<option value="<?php echo $template; ?>"><?php echo $template; ?></option> 
<?php } ?> 
<?php } ?> 
</select> 
</div> 
</form> 
+1

Вы пробовали использовать var_dump переменные, которые вы сравниваете? – lxg

ответ

0

Не точно испытания его, но Вы можете попробовать это с set_select использованием Form Helper.

<select name="config_template" id="input-template" class="form-control"> 
<?php foreach($templates as $template): ?> 

    <option value="<?php echo $template; ?>" <?php echo set_select('config_template', $template, $template == $config_template ? TRUE : FALSE); ?>><?php echo $template; ?></option> 

<?php endforeach; ?> 
</select> 

Edit: Я на самом деле не вижу, где вы установили $config_template точно. Я только вижу, что он упоминается в модели как $data['value'] или что будет $value в представлении.