【问题标题】:How to get data in Controller from view如何从视图中获取控制器中的数据
【发布时间】:2019-11-29 08:46:58
【问题描述】:

我想将数组从视图保存到数据库 但我无法从视图中获取数组。

在查看页面中

<?php
$nilai = array(
array(1,2,3,4),
array(a,b,c,d)
);

<a href="<?= BASEURL; ?>/penerima/tambah?nilai=$nilai" class="btn btn-l btn-info">simpan</a>

在控制器页面中

<?php

class Penerima  extends Controller
{

    public function index()
    {
        $data['penerima'] = $this->model('Penerima_model')->getAll();
        $this->view('templates/header');
        $this->view('penerima/index', $data);
        $this->view('templates/footer');
    }
    public function tambah() and I'm using MVC concept
    {

        $nilai = $_GET['nilai'];
        $this->model('Penerima_model')->tambahData($nilai);
    }
}

我有一个二维数组。

我该如何解决这个问题?

【问题讨论】:

  • 你使用的是什么 PHP 框架?
  • 为什么视图会生成一个php数组?这与视图的定义相反。视图可能会要求用户输入,可能会以&lt;input name=“nilai[][] ...&gt; 提交,但这是一个不同的问题
  • 我不使用我制作 mvc 手册的框架

标签: php arrays codeigniter post


【解决方案1】:

我找到了解决方案。这对我有用。我正在使用

将数组数组作为字符串值传递
json_encode()

解决方案是转义字符,所以我不得不将上面的行替换为

htmlspecialchars(json_encode(array))

解决方案:

 $nilai = array(
    array(1,2,3,4),
    array('a','b','c','d')
    );
<a href="http://localhost/code/tambah?nilai=<?= htmlspecialchars(json_encode($nilai)); ?>" class="btn btn-l btn-info">simpan</a>

在控制器中,我必须使用以下几行从 JSON 获取我的数组

function tambah(){
$dataJson = $this->input->get('nilai');
$dataArray = json_decode(htmlspecialchars_decode($dataJson), true);
print_r($dataArray);
}

最佳解决方案

最好的方法是使用会话

$this->session->set_userdata('nilai',$nilai);
<a href="http://localhost/code/tambah" class="btn btn-l btn-info">simpan</a>

现在,进入控制器

function tambah(){
$array = $this->session->userdata('nilai');
}

注意:在控制器中加载会话库或自动加载

【讨论】:

    【解决方案2】:

    看参考Passing arrays as url parameter 如果您使用的是codeigniter framework,那么要从 URL 中获取价值,请尝试使用

    $nilai = $this->input->get('nilai');
    

    【讨论】:

      【解决方案3】:
      You can't send array in get request as it is. So you can change your code as shown below
      
      
       in view page
      <?php
      $nilai = array(
      array(1,2,3,4),
      array(a,b,c,d)
      );
      
      $nilai = json_encode($nilai);
      
      <a href="<?= BASEURL; ?>/penerima/tambah?nilai=$nilai" class="btn btn-l btn-info">simpan</a>
      
      
      in controller page
      
      <?php
      
      class Penerima  extends Controller`
      {
      
          public function index()
          {
              $data['penerima'] = $this->model('Penerima_model')->getAll();
              $this->view('templates/header');
              $this->view('penerima/index', $data);
              $this->view('templates/footer');
          }
          public function tambah()
          {
      
              $nilai = $_GET['nilai'];
              $nilai = json_decode($nilai);
      
              $this->model('Penerima_model')->tambahData($nilai);
          }
      }
      

      【讨论】:

        【解决方案4】:

        您可以json_encodearray 并使用urlencode 传递它。

        在你看来:

        <?php
        $nilai = array(
          array(1,2,3,4),
          array(a,b,c,d)
        );
        // encode to json string and encode to valid url
        $nilai_urlencoded = urlencode(json_encode($nilai));
        
        ?>
        
        <a href="<?= BASEURL; ?>/penerima/tambah?nilai=<?=$nilai_urlencoded; ?>" class="btn btn-l btn-info">simpan</a>
        

        在您的控制器中,解码json 字符串

        <?php
        
        class Penerima  extends Controller
        {
        
            public function index()
            {
                $data['penerima'] = $this->model('Penerima_model')->getAll();
                $this->view('templates/header');
                $this->view('penerima/index', $data);
                $this->view('templates/footer');
            }
            public function tambah()
            {
                // Decode the url first and then convert the json_string to array
                $nilai = json_decode(urldecode($_GET['nilai'])));
                $this->model('Penerima_model')->tambahData($nilai);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-11
          • 2021-06-29
          相关资源
          最近更新 更多