CodeIgniter getMethod() 已弃用且提交按钮不起作用

问题描述 投票:0回答:4

我现在正在练习我的 CodeIgnitor,但我对它们仍然很陌生。我正在填写查询表格,并希望确保它检查表格是否经过正确验证。点击提交按钮后,会将表格发送至相应的邮箱。

但是我遇到问题说 getMethod() 已弃用 并且我的 提交按钮也没有响应

事实上,我不明白什么是不推荐使用的方法,有没有人可以帮助我澄清这部分并在使用 getMethod() 之前提供任何其他方法。

你们也能检查一下我的提交按钮做错了什么吗?如果您有更好的方法来验证表单并将电子邮件发送给相应的人员,那就更干净了。也很精彩。

这是我的代码:-

config/Controller/联系Controller.php

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class ContactController extends Controller
{
    // CONTACT PAGE
    public function contact()
    {
        //Library
        helper(['form']);

        //Contact Data Initiate
        $contact_data = [];
        $data = [
            'meta_title' => 'Contact | MFD',
        ];
        
        //Check request if it is post
        if($this->request->getMethod() == 'post'){

            // Setting Form Rules
            $settings_rule = [
                'email' => [
                    'name' => 'required|min_length[3]|max_length[20]',
                    'email' => 'required|valid_email',
                    'subject' => 'required',
                ],
                'msg' => 'required',
            ];

            if($this->validate($settings_rule)){
                //Validation true send message successfully sent and return back to the same page
                return view('page_templates/contact', $data);

            }else {
                // Will provide check list of error of the one we create 
                $contact_data['validation'] = $this->validator;
            }
        }

        return view('page_templates/contact', $data);
    }

views/page_templates/contact.php

               <div class="col-lg-8 mt-5 mt-lg-0">

                    <?php if(isset($validation)) : ?>
                        <div class="error-message">
                            <?= $validation->listErrors(); ?>
                        </div>
                    <?php endif ?>

                    <form method="post" role="form" class="php-email-form">
                        <div class="row">
                            <div class="col-md-6 form-group">
                                <input type="text" name="name" class="form-control" id="name" 
                                    value="<?= set_value('name'); ?>" placeholder="Your Name">       
                            </div>
                            <div class="col-md-6 form-group mt-3 mt-md-0">
                                <input type="email" class="form-control" name="email" id="email" 
                                    value="<?= set_value('email'); ?>" placeholder="Your Email">
                            </div>
                        </div>
                        <div class="form-group mt-3">
                            <input type="text" class="form-control" name="subject" id="subject" 
                                value="<?= set_value('subject'); ?>" placeholder="Subject">
                        </div>
                        <div class="form-group mt-3">
                            <textarea class="form-control" name="message" rows="5" placeholder="Message"><?= set_value('msg'); ?></textarea>
                        </div>
                        <!-- <div class="my-3">
                            <div class="loading">Loading</div>
                            <div class="error-message"></div>
                            <div class="sent-message">Your message has been sent. Thank you!</div>
                        </div> -->

                        <div style="height: 10px;"></div>
                        <div class="text-left button">
                            <button type="submit" name="submit">Send Message</button>
                        </div>
                    </form>

                </div>

如果有人可以帮助我,我真的很感激。谢谢你

codeigniter email form-submit submit-button getmethod
4个回答
3
投票

vscode 也通知了我同样的情况,然后我在控制器类之前添加了下面的行,它工作正常。

/**
 * @property IncomingRequest $request 
 */
class ContactController extends Controller{
   public function contact(){
   }
}

2
投票

您收到的确切弃用消息是什么?您使用的是哪个版本的 CodeIgniter?

弃用只是意味着该接口将在未来的版本中被删除。

但我只是查看了源代码和文档,该方法似乎并未被弃用。不过,可选参数

$upper
已被弃用。

所以你不想使用

$this->request->getMethod(TRUE | FALSE)
,因为将来不会支持它。不过
$this->request->getMethod()
应该没问题。

至于你的按钮问题...你没有提供足够的信息。

为了让客户端呈现的按钮响应单击事件,您需要添加一个侦听器。我猜你还没有。事情是这样的。

<script>
   let button = document.querySelector(".button button");
   button.addEventListener("click", function(event) {
       // Do your work here...
   });
</script>

0
投票

我正在使用 CI4 并遇到同样的问题,但以下解决方案对我来说效果很好

if($this->request->getMethod() == 'post'){}

改成这个

if ($this->request->getPost()) {}

if ($this->request->getGet()) {}

0
投票

更改为

if($this->request->is('post')){
    //..
}

if($this->request->is('get')){
    //..
}
© www.soinside.com 2019 - 2024. All rights reserved.