CI4: Die Übergabe der Variablen an benutzerdefinierte Validierungsregel kommt als Zeichenfolge nicht int intPhp

PHP-Programmierer chatten hier
Guest
 CI4: Die Übergabe der Variablen an benutzerdefinierte Validierungsregel kommt als Zeichenfolge nicht int int

Post by Guest »

Ich versuche, eine Seite von CI3 nach CI4 umzuschreiben.  In CI3 nahm die Validierungsregel einen Parameter aus dem Controller. Aber jetzt, da ich den Code neu geschrieben habe, kommt dieser Parameter (ProjektID) als Text 'ProjectID' durch.  Wie übergeben Sie eine Variable vom Controller an eine benutzerdefinierte Validierungsregel in CI4?

Code: Select all

    public array $manageProjectInfo = array (
        'fldPublish' => array (
            'label' => 'Make project public',
            'rules' => 'trim|check_publish_datasets[projectid]'
        )
    );
< /code>
Folgendes schreibt PID: ProjectID in die Protokolle: < /p>
   // check that there are no unpublished datasets if unpublishing project
    public function check_publish_datasets($fldPublish, $pid) { 
        $valid = TRUE;
        $project_model = model('Project_model');
        if (!$fldPublish) {
            log_message('debug','pid: '.$pid);
            $nDatasets = $project_model->get_projectdataavail($pid,$published=TRUE);

            if (count($nDatasets) > 0) {
                $valid = FALSE;
                $error = "This project cannot be unpublished because it contains published datasets.";
            }
        }   
        return $valid;
    }
< /code>
In App \ Controllers \ [url=viewtopic.php?t=10770]verwalten[/url] \ project.php < /p>
    public function info($projectid = -1) {
            $basics['pagetitle'] = "Manage Project Information";
            if ($this->request->getPost()) {
                $project['fldPublish'] = $this->request->getPost('fldPublish');
            }
            //Define form attributes
            $data['formattribs'] = array(
                'class' => 'basicForm',
                'id' => 'manage-project-info-form'
            );
            //Create array of input options, setting default values to either what they were in the database or what was entered in post data for form repopulation on error
            $data['fldPublish_publish'] = array(
                'name' => 'fldPublish',
                'id' => 'fldPublish',
                'type' => 'radio',
                'value' => '1',
                'checked' => ($project['fldPublish'] == "1" ? TRUE : FALSE)
            );
            $data['fldPublish_notpublish'] = array(
                'name' => 'fldPublish',
                'id' => 'fldPublish',
                'type' => 'radio',
                'value' => '0',
                'checked' => ($project['fldPublish'] == "0" ? TRUE : FALSE)
            );
            //Check if form validation has already been run and passed   
            //Form validation rules set in form_validation config file
            if (!$this->request->is('post') || !$this->validateData($this->request->getPost(), 'manageProjectInfo')) {
                $this->common->render_page($basics, 'manage/project/info', $data);
            }
            //If successful form validation...
            else {
                //Collect post data for insert
                $project = array(
                    'fldPublish' => $this->request->getPost('fldPublish')
                );
                $validData = $this->validator->getValidated();
                foreach ($validData as $key=>$valid) {
                    $project[$key] = $valid;
                }
                //Check flag-type columns to see if they're set to one, if they aren't set values to zero.
                if ($project['fldPublish'] != 1)
                    $project['fldPublish'] = 0;
                //Convert null dates
                $builder = $this->db->table('tblProject');
                $builder->where('pkProjectID', $projectid);
                $updateattempt = $builder->update($info_changes);
                if ($updateattempt) {
                    //update the projectUpdated date and log a tblProjectChanges record
                    $this->project_model->logProjectUpdated($projectid, "project", "info");
                    $this->session->setFlashdata('successmessage', "Your changes were successfully submitted");
                    return redirect()->to('manage/project/' . $projectid . '/info');
                } else {
                    $data['errormessage'] = "There was a problem writing your changes to the database.  Please try again";
                    //Load the views with render_pages, passing either name of main view to load or array of main pages to load
                    $this->common->render_page($basics, 'manage/project/info', $data);
                }
            }
        }
    }
In der CI4-Dokumentation gibt es ein Beispiel, das einen der anderen Formulareingänge als Parameter sendet -Regeln). Also habe ich versucht, eine versteckte Eingabe zu erstellen und diese zu übergeben, aber es hat auch den Textnamen der Variablen in die Protokolle gedruckt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post