CodeIgniter 4:如何在控制器中获取URI占位符的收件箱邮件编号?
解决CodeIgniter 4中控制器获取收件箱邮件编号的问题
你只需要在控制器的readMail方法中定义对应的参数,就能接收路由传递过来的邮件编号,具体操作如下:
1. 修改控制器方法的参数定义
把你当前控制器里的参数占位符替换成实际变量名(比如$mailNumber),还可以加上类型声明(因为路由限制了是数字(:num),用int更严谨):
public function readMail(int $mailNumber) { $getDetailsMessage = $this->mailboxInbox->getMessage($mailNumber); $data = [ 'title' => 'Baca Email Ci 4', 'inbox' => $getDetailsMessage ]; return view('readmail', $data); }
2. 原理说明
- 你的路由
$routes->get('/mailbox/baca-inbox/(:num)', 'Mailbox::readMail/$1');中,(:num)是路由占位符,用来匹配URL中的数字部分;$1表示把第一个捕获到的参数(也就是邮件编号)传递给控制器readMail方法的第一个参数。 - 视图中通过
$getMail->getNumber()生成的编号会拼接在URL里,用户点击链接时,这个编号会被路由捕获并传递给控制器方法的参数。
这样修改后,控制器就能正确获取到邮件编号,进而调用模型方法获取消息详情了。
内容的提问来源于stack exchange,提问作者Pitik Kuning
相关产品推荐
相关产品推荐

