【问题标题】:foreach issue select formforeach 问题选择表
【发布时间】:2014-09-02 19:56:00
【问题描述】:

我的 codeigniter 项目碰了壁。

我可以通过设置中的选择表单将我的主题/模板更新到数据库。我可以这样做,主题/模板在选择表单中显示正常。

但是$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>

【问题讨论】:

  • 您是否尝试过var_dumping 您正在比较的变量?

标签: php codeigniter


【解决方案1】:

尚未完全对其进行测试,但您可以使用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>

编辑:我实际上没有看到你在哪里设置了$config_template。我只看到它在模型中引用为 $data['value'] 或视图中的 $value

【讨论】:

    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2012-12-31
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多