提问人:NISHA NAJIHAH 提问时间:6/8/2021 更新时间:8/7/2023 访问量:3032
CodeIgniter getMethod() 已弃用,提交按钮无法正常工作
CodeIgniter getMethod() Deprecated and Submit Button not functioning
问:
我现在练习我的 CodeIgnitor,但我还是新手。我正在做查询表,想确保它检查表单是否正确验证。单击提交按钮后,它会将表单发送到相应的电子邮件。
但是我遇到了问题,说getMethod()已被弃用,我的提交按钮也没有响应。
事实上,我不明白什么是弃用的手段,在使用 getMethod() 之前,有没有人可以帮助我澄清这部分并提供任何其他方法。
你们能检查一下我在提交按钮上做错了什么吗?如果您有更好的方法来验证表单并将电子邮件发送给相应的表格,那会更干净一些。这也很棒。
这是我的代码:-
配置/控制器/联系人控制器:.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);
}
浏览次数/page_templates/联系方式.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>
如果有人能帮我解决这个问题,真的很感激。谢谢
答:
2赞
perpetual-light
6/8/2021
#1
您收到的确切弃用消息是什么?你使用的是哪个版本的 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赞
NISHA NAJIHAH
6/8/2021
HI 和 getMethod() 一样,实际上是内联斜杠。
0赞
NISHA NAJIHAH
6/8/2021
我不知道为什么,但我这样做了:'if($this->request->getMethod() == 'post'){'它应该有效,但事实并非如此。
1赞
perpetual-light
6/8/2021
这与我说的相符。“内联斜杠”可能只是您的 IDE 识别该方法的某个版本已被弃用。您未使用的版本。所以当你真正运行它时,你应该没问题。我使用 VSCode 并且它对弃用做同样的事情。但是 vscode 也有问题,所以如果它应用了一揽子规则而不考虑该方法具有不同的签名/版本,我不会感到惊讶。
1赞
perpetual-light
6/8/2021
对于您的数据库问题,最好提出不同的问题,并尽可能多地包含有关该问题的信息。我需要更多地了解你在做什么,做什么以及如何做。什么数据库,您正在使用的代码是什么,并尝试从您的执行中添加更多输出。
1赞
perpetual-light
6/8/2021
如果我的回答有帮助,你也可以接受。我认为。。。我是新来的。
3赞
Rias
12/17/2021
#2
vscode 也通知了我同样的事情,然后我在控制器类之前添加了下面的行,它工作正常。
/**
* @property IncomingRequest $request
*/
class ContactController extends Controller{
public function contact(){
}
}
评论
1赞
Asesha George
2/12/2023
#3
我正在使用 CI4 并遇到同样的问题,但以下解决方案对我来说效果很好
if($this->request->getMethod() == 'post'){}
更改为此
if ($this->request->getPost()) {}
if ($this->request->getGet()) {}
1赞
ktp
8/7/2023
#4
更改为
if($this->request->is('post')){
//..
}
if($this->request->is('get')){
//..
}
评论