Search code examples
phpformspropel

Validation Process error in propel and PFBC 3.1


I am using Propel and PFBC(php From Builder class). I wrote the validations in xml file using propel php orm (Database) now I want to use them when login button is clicked. It means I want to check the validation of form variables and database validation rules. my xml code look like this

<table name="names" phpName="Name">
<column name="nameid" phpName="Nid" type="integer" size="11" required="true" primaryKey="true"
autoIncrement="true" description="Name ID"/>
<column name="name" phpName="Name" type="varchar" size="50" required="true"
description="Name"/>
<validator column="name">
<rule name="required" message="Name is Required"/>
<rule name="minLength" value="3" message="Enter Valid Full-Name, Minimum of 3 characters"/>
<rule name="maxLength" value="20" message="Invalid Entry"/>
<rule name="match" value="/^[\w]+$/" message="No Special Character Allowed"/>
<rule name="unique" />
</validator>
</table>

<table name="relations" phpName="Relations">
<column name="rid" type="integer" size="11" required="true" primaryKey="true" autoIncrement="true"
description="Relational ID"/>

<column name="pnid" type="integer" size="11" required="true" description="name User ID"/>

<column name="rnid" type="integer" size="11" required="true" description="name Relationship ID"/>

<column name="relation" type="varchar" size="100" required="true" description="Relationship"/>

<validator column="relation">
<rule name="required" message="Relationship Type is Required" />
<rule name="match" value="/^([\w])+([\.\w\-]+)+$/" message="Enter a Valid String" />
<rule name="minLength" value="3" message="Enter a Valid Relation Ship"/>
<rule name="maxLength" value="20" message="Invalid Entry"/>
</validator>

<foreign-key foreignTable="names" onUpdate="CASCADE" onDelete="CASCADE">
<reference local="pnid" foreign="nid" />
<reference local="rnid" foreign="nid" />
</foreign-key>
</table>

Solution

  • I'm guessing you just want to know how to run Propel's validations then? If so, you can do it like this:

    $name = new Name();
    $name->setName($_POST['Name']); // or however you want to do it
    // set other object properties
    
    if (!$name->validate()) {
      $errors = $name->getValidationFailures();
      foreach ($errors as $field => $error) {
        // do something with the valiadtion errors
      }
    }