2017-06-05 128 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自动创建。希望这会有帮助。 @安娜贝儿 –

相关问题