代码之家  ›  专栏  ›  技术社区  ›  Rangka Kacang

PHP Array Foreach()将变量从数据库传递到CodeIgniter模板解析器

  •  0
  • Rangka Kacang  · 技术社区  · 7 年前

    这是我的数据库表(以前,我使用垂直设计,但由于缺乏数据类型支持,我改为水平设计):

    +-----------+-------------------+
    | site_name | site_url          |
    +-----------+-------------------+
    | Awesome   | http://localhost/ |
    +-----------+-------------------+
    

    控制器:

    public function index() {
       $data = $this->db->select("*")->from('settings')->get()->result_array();
       $new_data = $data['0'];
       $this->parser->parse('default/header.php', $new_data);
    }
    

    查看:

    <a href="{site_url}">{site_name}</a>

    上述$数据将打印:

    Array
    (
        [0] => Array
            (
                [site_name] => Awesome
                [site_url] => http://localhost/
            )
    )
    

    我觉得我的控制器代码看起来很愚蠢。有没有更好的方法来循环使用 foreach() 自动传递键和值,以便与CodeIgniter的模板解析器一起使用,例如 {site_name} {site_url} ?

    有关其他参考,请参见 this question ,它是相关的,但不是重复的。

    2 回复  |  直到 7 年前
        1
  •  0
  •   mohamedvall    7 年前

    试试这个

    控制器

    public function index() {
      $settings = $this->db->get('settings')->first_row();
      $this->parser->parse('default/header.php', $settings);
    }
    

    看法

    <a href="{site_url}">{site_name}</a>
    
        2
  •  0
  •   Vikrant    7 年前

    您当前的代码将一直工作到只有一行为止,如果您有许多行,该代码将无法在这种情况下工作,您将需要一些像foreach这样的循环。

    您可以将数据库操作保留在模型中,而不是控制器中。

    否则看起来不错,不傻。每个人都有自己的代码编写方式。