【问题标题】:codeigniter 4 routes querycodeigniter 4 路由查询
【发布时间】:2022-08-05 11:21:17
【问题描述】:

这是我的功能

public function check()
{   
    $data = [
                \'pageTitle\' => \'Documents Check\',
                \'action\' => \'check\',
                \'validation\' => NULL,
    ];
    
    if($this->request->getMethod() == \'post\'){

        $validation = $this->validate([
            \'jobNo\' => [
                        \'rules\' => \'required|numeric|exact_length[6]|is_not_unique[docs.Job_no]\',
                        \'errors\' => [
                               \'required\' => \'Job No. required.\',
                               \'exact_length\' => \'Job No. should be exactly 6 digits.\',
                               \'numeric\' => \'Job No. should be numbers only.\',
                               \'is_not_unique\' => \'No files available for entered Job No.\',
                           ]    
                      ],
        ]);
        if($validation){
            $jobNo = $this->request->getVar(\'jobNo\',FILTER_SANITIZE_STRING);
            $data[\'docs\'] = $this->docsModel->getDocsByJob($jobNo);
            return view(\'documents/files_display\',$data);
        }
        else{
            $data[\'validation\'] = $this->validator; 
        }  
        
    } // post

   return view(\'documents/files_view\',$data);
} // check

file_display 看起来

id Job No Document action
1 23233 invoice.pdf remove
2 23233 deliver.pdf remove
public function remove($id){        
    if($this->docsModel->delete($id);){
            return redirect()->back()->with(\'success\',\'file removed from the Job record\');
        }
} 

所以这里 redirect()->back() 或 current_url() 将我带到我必须再次在表单上输入 \"Job No\" 的页面。我一直在寻找的是在单击删除时留在 file_display 页面上。

  • “我想要”不是问题。请显示一些相关代码并准确解释您在尝试实现您想要的东西时遇到的困难。另请参阅How to Asktour,了解有关提出有用、可回答问题的更多指导。
  • 我们现在可以告诉你的最好的方法是“如果你想进行重定向,请编写代码在适当的位置进行重定向”。由于我们无法看到有关您的代码的任何信息,或者无法了解您在进行重定向时可能遇到的困难,因此我们可能无法提供更多有用的信息,只能猜测一些适当的代码。但最好能根据自己的实际情况写出准确的答案。谢谢。
  • What i was looking for was to stay on file_display page on clicking the remove....那为什么不重定向到文件显示页面呢?或者您可以将 AJAX 用于 remove() 操作,这样一开始就没有回发

标签: php mysql codeigniter


【解决方案1】:

也许你可以使用Session

public function check()
{   
    $data = [
                'pageTitle' => 'Documents Check',
                'action' => 'check',
                'validation' => NULL,
    ];
    
    if($this->request->getMethod() == 'post'){

        $validation = $this->validate([
            'jobNo' => [
                        'rules' => 'required|numeric|exact_length[6]|is_not_unique[docs.Job_no]',
                        'errors' => [
                               'required' => 'Job No. required.',
                               'exact_length' => 'Job No. should be exactly 6 digits.',
                               'numeric' => 'Job No. should be numbers only.',
                               'is_not_unique' => 'No files available for entered Job No.',
                           ]    
                      ],
        ]);
        if($validation){
            $jobNo = $this->request->getVar('jobNo',FILTER_SANITIZE_STRING);
            $data['docs'] = $this->docsModel->getDocsByJob($jobNo);
            
            //Save jobNo to SESSION
            session()->set('jobNo', $jobNo);
            
            return view('documents/files_display',$data);
        }
        else{
            $data['validation'] = $this->validator; 
        }  
        
    } // post

   // Add GET method condition, and if there is jobNo in session
   if($this->request->getMethod() == 'get' && session->has('jobNo')){
       $jobNo = session()->get('jobNo');
       $data['docs'] = $this->docsModel->getDocsByJob($jobNo);
       return view('documents/files_display',$data);
   }

   // Remove Session when accessing FORM (Optional)
   // session()->remove('jobNo');
   
   return view('documents/files_view',$data);
} // check

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多