2013-08-01 2 views
0

Внутри моего контроллера у меня есть строка, которая должна передать $ content ['pass_check'] в представление. Он находится внутри оператора if, который проверяет правильность. Это я обнаружил, что он ломается. Как только я перемещаю $ content ['pass_check'] вне любого оператора if, он отлично работает, передавая представление. Все остальные значения передаются (учетные записи, счет_зачисления, поставщики, условия). Что я должен сделать, чтобы передать его в этом выражении if. Я даже пытался переместить его за пределы проверки, и он все равно не будет установлен.Невозможно передать значение массива из контроллера codeigniter для просмотра

function create() { 
    require_permission("INVOICE_EDIT"); 

    $this->load->library("form_validation"); 
    $this->form_validation->set_rules("invoice_number", "Invoice Number", "required"); 

    if($this->form_validation->run() !== false) { 
     $post = $this->input->post(); 

     $this->session->set_userdata("create_invoice_vendor", $post['vendor_id']); 
     $this->session->set_userdata("create_invoice_date", $post['invoice_date']); 

     $invoice_number_exists = $this->invoices->count(array("invoice_number" => $post['invoice_number'])) > 0; 

     $post['invoice_date'] = date("Y-m-d", strtotime($post['invoice_date'])); 
     $post['due_date'] = date("Y-m-d", strtotime($post['due_date'])); 
     $post['date_entered'] = "now()"; 

     $id = $this->invoices->insert_invoice($post); 

     $this->load->model("vendors"); 

     if(isset($post['invoice_number'])){ 
      $string_check= $post['invoice_number']; 
      $string_check= preg_replace('/\d/', '#', $string_check); 
      $string_check= preg_replace('/\w/', '#', $string_check); 

      $invoice_pattern=array(); 
      $invoice_pattern = $this->db->select("invoice_pattern")->where("vendor_id", 
             $post['vendor_id'])->get("vendors")->result(); 
      $invoice_pattern=$invoice_pattern[0]->invoice_pattern; 

* //// ЭТО ГДЕ НУЖНА ПОМОЩЬ ///////

    if($invoice_pattern == $string_check){ 
         ***$content['post_check'] = 1;*** 
         $this->invoices->flag_invoice($id); 
        }; 

       }; 



       $history = array(
        "type"  => "invoice_entered", 
        "comments" => "Invoice was entered", 
        "link"  => $id, 
        "admin_id" => $this->user->admin_id, 
        "date"  => "now()", 
        ); 
       $this->vendors->insert_history($post['vendor_id'], $history); 

       if($post['flagged'] == 1) { 
        $this->invoices->flag_invoice($id); 
       } 

       if($invoice_number_exists) { 
        redirect("invoices/confirm_invoice/".$id); 
       } else { 
        // redirect("invoices/view/".$id); 
        redirect("invoices/create"); 
       } 
     } 

      $content['accounts'] = $this->db->get("acct_chart_of_accounts")->result(); 
      $content['expense_accounts'] = $this->db->get("invoice_expense_accounts")->result(); 
      $content['vendors'] = $this->db->select("vendor_id, name, terms, override, invoice_pattern") 
          ->order_by("name ASC")->get("vendors")->result(); 
      $content['terms'] = $this->db->query("SELECT DISTINCT(terms) FROM vendors")->result(); 
     } 
    } 

    $this->template['sub_heading'] = "Create"; 
    $this->template['content'] = $this->load->view("invoices/create", $content, true); 
    $this->template['sidebar'] = $this->load->view("invoices/sidebar", array(), true); 
    $this->template['scripts'] = array("codeigniter/javascript/invoices/create.js"); 
    $this->template['styles'][] = "codeigniter/styles/invoices/create.css"; 

    $this->display(); 
} 
+0

Что вы подразумеваете под BREAK? – RiggsFolly

ответ

0

Очевидно, что это не будет передавать его мнению, если условие не match, потому что вы только объявляете переменную в условии, если она совпадает.

Просто создайте $ content ['pass_check'] с начальным значением 0 или независимо от предварительной проверки.

function create() { 

    ...snip... 

    $content['pass_check'] = 0; 

    if($invoice_pattern == $string_check) { 
     $content['post_check'] = 1; 
     $this->invoices->flag_invoice($id); 
    }; 

    ...snip... 
} 

Сообщите мне, если это работает или нет.

Смежные вопросы