Jump to content

Geburtsdatum als Pflichtfeld


Recommended Posts

Hallo,

 

ich häng mich mal mit rein. :D

 

Und twar hab ich ein ähnliches Problem und doch ganz anders.

 

Ich muß nämlich die Eingabe des Geburtsdatums zum Pflichtfeld machen.

Also eigentlich das genaue Gegenteil.

 

Ihr habt so schön gezeigt wie man die Felder ausblendet. Aber wie mach ich das Ganze zur Pflichteingabe?

Link to comment
Share on other sites

Also ich habs hinbekommen. Ist eigentlich zu einfach um es zu finden. :D

 

Einfach im Adminbereich unterm Tab Kunden ganz nach unten scrollen.

Dort drückt man dann auf Pflichtfelder setzen und wählt im aufgehenden Select den birthday aus.

 

Dann noch in der order-opc-new-account.tpl bzw. der authentication.tpl im

Ordner module/germanext/themes und setzt beim p ein required und ergänzt die <sup>*</sup>

 

Und schon läuft die Sache. :)

 

Wenn man germanext nicht nutzt, sollte das Ganze im Standardtemplate zu ändern sein.

Link to comment
Share on other sites

  • 2 weeks later...

Dazu ist kein "Germanext" Modul nötig. Ist mittlerweile eine Standardfunktion von Prestashop

 

-> Tabreiter Kunden.

 

Dann ganz unten: Setzen Sie die Pflichtfelder für diesen Bereich -> birthday auswählen und schon wird Geburtstag zu einem Pflichtfeld.

Link to comment
Share on other sites

  • 8 months later...
  • 4 months later...
  • 1 month later...

Es geht einfach übers Back Office:

  •     Lokalisierung --> Länder --> DeinLand
  •     Fenster Adressanzeige
  •     rechts daneben auf customer klicken, dann öffnen sich die möglichen Optionen
  •     Dann den Cursor dahin, wo das Feld 'birthday' erscheinen soll
  •     (alternativ hättest du ins Fenster auch einfach 'Customer:birthday'
  •     Nun einen Doppelklick auf 'birthday'
  •     Die Option "Mein aktuell modifiziertes Design verwenden" anklicken
  •     Oben rechts im Fenster auf den grünen Button Speichern klicken

Bei der Anmeldung gibt es nun ein neues Pflichtfeld Geburtsdatum.

Edited by eleazar (see edit history)
Link to comment
Share on other sites

Für Prestashop 1.5.6.1. Vermutlich auch für alle anderen PS 1.5.-Versionen auch (aber nicht von mir getestet):

 

 

Um das Geburtsdatum als Pflichtfeld zu machen (ist ja eigentlich im Standardtheme schon eingebunden, also es wird schon angezeigt, ohne dass man extra Anpassungen an den Ländern machen muss), musst du folgende Datei ändern:

 

/classes/Customer.php ca. Zeile 168 einfach wie folgt ergänzen (required=> true):

'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate', 'required' => true), 

Die Datei von deinem FTP holen und mit Notepad z.B. bearbeiten und dann wieder an der gleichen Stelle hochladen.

 

Habe noch schnell ein Bild angehängt, damit du siehst, dass es funktioniert. Geburtstag wurde nicht angegeben und beim Speichern wurde die Fehlermeldung ausgeworfen (oben rosa)

post-723243-0-05445600-1385922542_thumb.jpg

Edited by cd2500 - julie (see edit history)
  • Like 1
Link to comment
Share on other sites

Auch dir, danke ich für deine Antwort.

Ich habe die Datei wie von dir beschrieben geändert.

 

Nun darf der Punkt Geburtstag nicht leer bleiben. Das funktioniert soweit. Nur leider nimmt er es auch nicht mehr an, wenn ich eins angebe :-(.

 

Vielleicht liegt das aber an meinem Problem, dass er checkbox's oder dropdown's die ich auf einer Seite verändere nicht annimmt. Wie hier beschrieben:

http://www.prestashop.com/forums/topic/292373-fehler-im-one-page-checkout/?do=findComment&comment=1474134

 

Hat dazu jemand eine Idee?

Link to comment
Share on other sites

  • 1 year later...

Auch dir, danke ich für deine Antwort.

Ich habe die Datei wie von dir beschrieben geändert.

 

Nun darf der Punkt Geburtstag nicht leer bleiben. Das funktioniert soweit. Nur leider nimmt er es auch nicht mehr an, wenn ich eins angebe :-(.

 

Vielleicht liegt das aber an meinem Problem, dass er checkbox's oder dropdown's die ich auf einer Seite verändere nicht annimmt. Wie hier beschrieben:

http://www.prestashop.com/forums/topic/292373-fehler-im-one-page-checkout/?do=findComment&comment=1474134

 

Hat dazu jemand eine Idee?

Muss den Thread mal wieder aufwärmen. ;-)

 

Habe den 1.6.9 Shop und genau dasselbe Problem..

 

Wenn ich die Änderung im PHP mache kann ich den Registrierablauf nicht fortsetzen. Egal ob BOD eingegeben wurde oder nicht, er beanstandet ständig es sei Pflicht und fehle.

Habe es nu wieder rückgangig gemacht damit die Leute wieder Anmelden können :-)

 

Weiss jemand weiter?

Danke

Link to comment
Share on other sites

Hallo,

wir nutzen u.a. die 1.6.0.6.

Hier mal die Schritte die dann zu dem gewünschten Verhalten geführt haben:

1.) classes/Customer.php

'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),

Ersetzen mit:

'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate', 'required' => true), 

2.) In der prestashop/controllers/front/AuthController.php folgenden Code einsetzen:

<div class="form-group">
				<label>{l s='Date of Birth'} <sup>*</sup></label>

3.) und damit das System nicht meckert obwohl der Kunde ein Geburtsdatum angegeben hat - zu finden unter: presta/classes/ObjectModel.php

if (isset($data['required']) && $data['required'] && empty($value) && $value !== '0')
{
    if (!$this->id || $field != 'passwd')
       $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
}

ersetzen mit:

     if(isset($data['required']) && $data['required'] && $field == 'birthday')
    {
    if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) && !(Tools::getValue('months') == '-' && Tools::getValue('days') == '-' && Tools::getValue('years') == '-'))
    {
    $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
    }
    }
    elseif (isset($data['required']) && $data['required'] && empty($value) && $value !== '0')
    {
    if (!$this->id || $field != 'passwd')
    {
    $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
    }
    }

Vielleicht hilft es ja jemand weiter.

Gruss

Edited by marcus b (see edit history)
Link to comment
Share on other sites

  • 2 years later...

Hallo,

 

wir nutzen u.a. die 1.6.0.6.

 

Hier mal die Schritte die dann zu dem gewünschten Verhalten geführt haben:

 

1.) classes/Customer.php

'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),

Ersetzen mit:

'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate', 'required' => true), 

2.) In der prestashop/controllers/front/AuthController.php folgenden Code einsetzen:

<div class="form-group">
				<label>{l s='Date of Birth'} <sup>*</sup></label>

3.) und damit das System nicht meckert obwohl der Kunde ein Geburtsdatum angegeben hat - zu finden unter: presta/classes/ObjectModel.php

if (isset($data['required']) && $data['required'] && empty($value) && $value !== '0')
{
    if (!$this->id || $field != 'passwd')
       $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
}

ersetzen mit:

     if(isset($data['required']) && $data['required'] && $field == 'birthday')
    {
    if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) && !(Tools::getValue('months') == '-' && Tools::getValue('days') == '-' && Tools::getValue('years') == '-'))
    {
    $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
    }
    }
    elseif (isset($data['required']) && $data['required'] && empty($value) && $value !== '0')
    {
    if (!$this->id || $field != 'passwd')
    {
    $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
    }
    }

Vielleicht hilft es ja jemand weiter.

 

Gruss

 

Hi Marcus,

 

ich habe den 1. punkt so umgeschrieben wie es steht aber leider finde ich punkt 2 nicht wie es von dir beschrieben ist

bzw. den Pfad: prestashop/controllers/front/AuthController.php

mein Pfad: /madesteam.de/controllers/front/AuthController.php (also prestashop gibt es bei mir nicht). und in meiner Datei finde ich diese: <div class="form-group">

                <label>{l s='Date of Birth'} <sup>*</sup></label> nicht.

 

Wenn du mir helfen könntest oder jemand anderes wäre ich sehr dankbar.

 

Prestashop Version 1.6.1.12

Link to comment
Share on other sites

Hallo Made Steam,

 

sich an so einen alten Post dranzuhängen, der sich auf eine andere PS-Version bezieht,  hat wenig Sinn.

 

Für 1.6.1.12  erstellst du zwei neue Dateien (am Besten mit notepad++)

 

 

<?php

class Customer extends CustomerCore
{

    public function __construct($id = null)
    {
        self::$definition['fields']['birthday'] = array(
            'type' => self::TYPE_DATE,
            'validate' => 'isBirthDate',
            'required' => true
        );
        parent::__construct($id);
    }
}

Diese speicherst du unter dem Namen Customer.php ab

 

 

<?php

class AuthController extends AuthControllerCore
{
    protected function processSubmitAccount()
    {
        $birthday = (empty($_POST['years']) ? '' : (int)Tools::getValue('years').'-'.(int)Tools::getValue('months').'-'.(int)Tools::getValue('days'));
        if ($birthday) {
            $GLOBALS['_POST']['birthday'] = $birthday;
        }

        return parent::processSubmitAccount();
    }
}

Diese speicherst du unter dem Namen AuthControllerCore.php ab

 

Beide Dateien kopierst du über FTP in das Verzeichnis:

/override/controllers/front

 

Dann wechselst du ins Verzeichnis:

/cache

und löscht dort die Datei (die legt Prestashop neu an)

class_index.php

 

Viel Erfolg

Whiley

Link to comment
Share on other sites

Hi Whiley,

 

nach dem ich die dateien bei meinem hoster zum ursprung zurück installiert habe (dannach meine seite getestet alles wie vorher)

habe ich es so gemacht wie du es mir beschrieben hast. Vielen Dank! Aber leider habe ich auch das problem das mein shop trotz Geburtsdatums eingabe meckert.

Was habe ich nicht richtig gemacht oder muss ich noch was anderes eingeben?

Eine bitte hätte ich noch, ist es möglich zum Geburtsdatum ein * hinzuzufügen?

Ich danke dir im Vorraus und hoffe das es ok ist hier zu Schreiben.

 

MfG

MaDe Steam

Link to comment
Share on other sites

 

Eine bitte hätte ich noch, ist es möglich zum Geburtsdatum ein * hinzuzufügen?

Das machst du am einfachsten bei den Übersetzungen:

Backoffice-->Lokalisierung-->Übersetzungen dort öffnest du die Übersetzungen für die Front u. deutsch dann navigierst du zu AUTHENTICATION, hier findest du Geburtsdatum , gibst den * dazu ein und speicherst ab.

 

 

Aber leider habe ich auch das problem das mein shop trotz Geburtsdatums eingabe meckert.

Soll was heißen?

 

Grüsse

Whiley

Link to comment
Share on other sites

Hi Whiley,

 

ich habe deine dateien AuthController.php und Customer.php ins override verzeichnis kopiert und im cache verzeichnis class_index.php gelöscht aber leider funktioniert es nicht.

Fehlermeldung geburtsdatum erforderlich trotz eingabe und mit dem Sternchen einfügen unter Lokalisierung > Übersetzungen - Front office übersetzung - Sprache Deutsch  > Authentication erscheint leider auch kein * (Sternchen).

 

Liegt es vielleicht an den Fehlermeldungen bzw. Ausrufezeichen? (Bild)

post-1389438-0-53793100-1495127987_thumb.jpg

post-1389438-0-81505800-1495128023_thumb.jpg

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...