2017-06-05 95 views
1

我有一個聯繫我們表單和用戶輸入數據並提交它。該數據需要在控制器功能中訪問,以便我可以向管理員發送郵件,通知最近收到的用戶請求。cakephp3-無法將表格數據發佈到控制器功能

但是當我按下提交按鈕,沒有任何反應。只需重新加載表單並將聯繫人表單(查看頁面)顯示給用戶。我不知道爲什麼數據沒有傳遞給控制器​​功能。

我是CakePHP框架的新手,我使用CakePHP3進行開發。

這裏是我的形式:

<?php echo $this->Form->create(null, ['url' => ['controller' => 'Pages', 'action' => 'contactus']]); ?> 
    <div class="col-md-6"> 
     <?php echo $this->Form->input('fname', ['placeholder' => 'Your name.' , 'id' => 'fname', 'required' => 'required']); ?> 
    </div> 
    <div class="col-md-6"> 
     <?php echo $this->Form->input('mail', ['placeholder' => 'Your email.' , 'id' => 'mail', 'required' => 'required']); ?> 
    </div> 
    <div class="col-md-6"> 
     <?php echo $this->Form->input('subject', ['placeholder' => 'Write something.', 'id' => 'subject']); ?> 
    </div> 

    <div class="col-md-9"> 
     <?php echo $this->Form->button(__('Submit')); ?> 
    </div>   
<?php echo $this->Form->end(); ?> 

我的控制器功能是:

public function contactus() 
{ 
     $pages =''; 
     if ($this->request->is('post')) 
     { 
      $pages = $this->request->data('Contact'); 
     } 
     $this->set(compact('pages')); 
     $this->set('_serialize', ['pages']); 
    } 

誰能告訴我,我犯的錯誤?

回答

1

我認爲你的表單正在提交,但沒有通過post方法。所以我想對你說,在提交表格之前,請先更改波紋管。

$pages =''; 
    if ($this->request->is('post')) 
    { 
     echo "Request is post";die; 
     $pages = $this->request->data('Contact'); 
    }else{ 
     echo "request is not post";die; 
    } 
    $this->set(compact('pages')); 
    $this->set('_serialize', ['pages']); 

現在檢查,顯示屏正在打印。然後我可以進一步幫助你。

請記住: - 填寫表格,然後更改控制器方法,然後按提交方法。

+0

我試過了,沒有打印。我填寫表單,然後單擊「提交」按鈕,但根據解決方案沒有看到回顯。它似乎像表單重新加載,沒有別的。我只是看到再次聯繫我們。 @ bikash.bilz – Annabelle

+0

表單提交時可能有錯誤的方法調用。使用蛋糕形式的幫手,我認爲這會幫助你。你可以從這個鏈接跟進。 @Anna Belle https://book.cakephp.org/3.0/en/views/helpers/form.html –

+0

或者至少在表格開始時使用 Form-> create(null,array('url' => ['controller'=>'Logins','action'=>'login'],'id'=>'contact-form','class'=>'form-signin','inputDefaults'=> array ( 'label'=> false ))); ?> 並在表格中關閉使用 Form-> end()?> 不要寫html表單標籤,因爲它會由cake自動創建。希望這會有幫助。 @安娜貝兒 –

相關問題