2017-07-11 2 views
0

Ich habe ein Problem in meinem Code. In meinem Setup habe ich eine einzelne Seite für die Sprachauswahl erstellt. Und ich kopiere etwas von Opencarts Code auf Sprachschablone und auch auf Controller. Aber mein Problem ist nach dem Übergeben meines Formulars, der Action-Controller erhält keine POST-Daten von meinem Formular.POST-Anfrage erkennt nicht in meinem Controller mit Opencart

<form action="{{ action }}" method="POST" enctype="multipart/form-data" id="form-language"> 
    <div class="col-lg-4"> 
     <div class="border_index_in"> 
      <div class="holder"> 
       <h3>ENGLISH</h3> 
       <button class="language-select btn btn-green" type="button" name="en-gb">Choose</button> 
      </div> 
     </div> 
    </div> 
    <div class="col-lg-4"> 
     <div class="border_index_in"> 
      <div class="holder"> 
       <h3>日本語</h3> 
       <button class="language-select btn btn-green" type="button" name="jap">選択</button> 
      </div> 
     </div> 
    </div> 
    <div class="col-lg-4"> 
     <div class="border_index_in"> 
      <div class="holder"> 
       <h3>中文</h3> 
       <button class="language-select btn btn-green" type="button" name="zh-hk">选择</button> 
      </div> 
     </div> 
    </div> 
</form> 

JS:

// Language 
    $('#form-language .language-select').on('click', function(e) { 
     e.preventDefault(); 
     $('#form-language input[name=\'code\']').val($(this).attr('name')); 
     $('#form-language').submit(); 
    }); 

-Controller meine Sprachauswahlseite

public function language_switch() { 
    $this->load->model('setting/extension'); 
    $this->document->setTitle($this->config->get('config_meta_title')); 
    $this->document->setDescription($this->config->get('config_meta_description')); 
    $this->document->setKeywords($this->config->get('config_meta_keyword')); 

    if (isset($this->request->get['route'])) { 
     $this->document->addLink($this->config->get('config_url'), 'canonical'); 
    } 

    $data['action'] = $this->url->link('common/language/language'); 
    $data['code'] = $this->session->data['language']; 

    $styles_array = array(
     'catalog/view/theme/onemidorie/stylesheet/style.css' 
    ); 

    $scripts_array = array(

    ); 

    foreach($styles_array as $st) { 
     $this->document->addStyle($st); 
    } 

    foreach($scripts_array as $sc) { 
     $this->document->addScript($sc); 
    } 

    $data['styles'] = $this->document->getStyles(); 
    $data['scripts'] = $this->document->getScripts(); 

    $data['footer'] = $this->load->controller('common/footer'); 
    $data['header'] = $this->load->controller('common/header'); 

    $this->response->setOutput($this->load->view('common/language_selection', $data)); 

} 

Controller zu zeigen, dass die POST-Daten aus meiner Form annehmen sollte:

public function language() { 
     print_r($this->request->post['code']); //Notice: Undefined index: code 
     die; 
     if (isset($this->request->post['code'])) { 
      $this->session->data['language'] = $this->request->post['code']; 
     } 

     if (isset($this->request->post['redirect'])) { 
      $this->response->redirect($this->request->post['redirect']); 
     } else { 
      $this->response->redirect($this->url->link('common/home')); 
     } 
    } 

Können Sie mir helfen?

Antwort

0

Sie sollten print_r ($ this-> request-> post) verwenden; sterben;

Dann erhalten Sie einige Post-Daten.

weil Sie den Namen wie "en-gb", "jap" und "zh-hk" definieren. Bitte benutzen Sie den obigen Code, um eine Lösung zu erhalten.

+0

Wenn ich das mache, ist die Ausgabe ein leeres Array :( – Jerielle

+0

Bitte teilen Sie Ihre Informationen oder kommunizieren auf skype: jks0586 für dieses Problem. Ich werde Problem beheben. – LetsCMS

0

Sie veröffentlichen keine Daten - Sie zeigen nur eine Schaltfläche. Verwenden Sie etwas mehr wie

<input type="submit" value="english" name="lang"/> 
<input type="submit" value="japanese" name="lang"/> 

usw. dann nur Blick auf

$_POST['lang'] 

und sehen, ob es Englisch ist, japanisch oder was auch immer.

Verwandte Themen