我在我的codeigniter项目上遇到了一堵砖墙。
我可以通过我的设置中的选择表单将我的主题/模板更新到数据库。我可以这样做,主题/模板在选择表单中显示OK。
但$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>
答案 0 :(得分:0)
Haven没有准确测试它,但您可以使用Form Helper.
set_select
尝试使用<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>
$config_template
修改:我实际上并没有看到您确切地设置$data['value']
的位置。我只在模型中将其视为$value
或视图中的{{1}}。