2016-08-06 46 views
0

Ich bin ein Anfänger Joomla und versuchen, eine Komponente zu entwickeln, aber wenn ich versuche, Regeln zu meinem Backend-Panel hinzufügen, bekomme ich diesen Fehler immer wieder. Wenn jemand mir sagen kann, was ich falsch mache, wird geschätzt.Joomla Wurffehler für benutzerdefinierte Validierungsregel

Hier ist der Code für die Regel, die ich geschrieben habe.

com_mycomponent/models/Regeln/segment_name.php

// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 

/** 
* Form Rule class for the Joomla Framework. 
*/ 
class JFormRuleSegmentName extends JFormRule 
{ 
    /** 
    * The regular expression. 
    * 
    * @access protected 
    * @var  string 
    * @since 2.5 
    */ 
    protected $regex = '^[^0-9]+$'; 
} 

Und das ist meine Form Code:

com_mycomponent/models/forms/segment.xml

<?xml version="1.0" encoding="utf-8"?> 
<form addrulepath="/administrator/components/com_mycomponent/models/rules"> 
    <fieldset> 
     <field 
       name="id" 
       type="hidden" 
       /> 
     <field 
       name="segment_name" 
       type="text" 
       label="COM_MYCOMPONENT_SEGMENT_NAME_LABEL" 
       description="COM_MYCOMPONENT_SEGMENT_NAME_DESC" 
       size="40" 
       class="inputbox" 
       validate="segment_name" 
       required="true" 
       default="" 
       /> 
    </fieldset> 
</form> 

Es funktioniert nicht für mich, das ist, was ich bekomme, wenn ich versuche, ein neues Segment hinzuzufügen oder zu bearbeiten:

Fehler:

An error has occurred. 0 JForm::validateField() rule segment_name missing.

+0

überprüfen Sie diese http://joomla.stackexchange.com/questions/4037/server-side-validation-rule-is-not-being-found – ayush

+0

@ayush Sorry, aber ich bin bereits Angabe Pfad. –

Antwort

1

Es gibt einige Regeln, die nicht

  1. Sie haben segment_name als Dateinamen gefolgt werden verwendet, aber Sie haben als Klassennamen Segmentname angegeben. Beide sollten übereinstimmen.

  2. Nicht zwingend, aber Sie können in den Regeln verwenden

    jimport ('joomla.form.formrule') einreichen;

    definiert ('_ JEXEC') oder sterben ('Eingeschränkter Zugriff');

    // Joomla-Formular-Bibliothek importieren jimport ('joomla.form.formrule');

    /**

    • Formular Regelklasse für das Joomla Framework. */ Klasse JFormRuleSegment_rule erweitert JFormRule {
  3. In dem Formular sollte der addrule Pfad so

<form> 
 
     <fieldset name="form_name" addrulepath="components/com_mycomponent/models/rules"> 
 
    ----------------fields 
 
     </fieldset> 
 
    </form>

form_name sollte Der Ihre Form Name gegeben werden Suffix des Klassennamens (JFormRule [SUFFIX]) muss mit dem Regeldateinamen identisch sein. https://docs.joomla.org/Server-side_form_validation

+0

Wenn nicht unterstrichen, gibt es ein Trennzeichen, um zwei Wörter für den Regelnamen zu trennen? und ich habe auch versucht, den Namen Sagment_Name der Klasse zu behalten, aber es hat auch nicht funktioniert :-( –

+0

@RohitKhatri Ich habe die Antwort plz check aktualisiert. –