Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Page 1 of 5
Adressformular Pflichtfelder
 
andyk123
Member
 
Total Posts:  36
Joined:  2008-02-04
 

Hallo Zusammen,

kann mir jemand sagen, wie ich ein Feld im Adressformular als Pflichtfeld deklarieren kann bzw. ein Feld “entpflichten” kann. Ich brauche nämlich im Shop keine Eingabe der Telefonnummer und das Bundesland ist auch eher unwichtig. Das muss es doch eigentlich irgendwo zu konfigurieren geben. Ist doch schon fast Standard, dass jede Firma andere Informationen von Ihren Kunden braucht.

Greets!

 
Magento Community Magento Community
Magento Community
Magento Community
 
mzentrale1
Guru
 
Total Posts:  731
Joined:  2007-12-06
Stuttgart, Germany
 

Hi,

da musst du mehrere sachen anpacken, Magento validiert zum einen die Felder per Javascript. Wenn du die dir die Formularfelder im Quelltext anschaust haben die diese Klasse

class="required-entry input-text"

Wenn du nun im Template den Part “required-entry” entfernst erfolgt keine JS Validierung mehr.

Magento validiert die Pflichtfelder ebenfalls serverseitig. Für die Kundenadresse ist das das Model app/code/core/Mage/Customer/Model/Address/Abstract.php, hier die Methode validate(). Auf dieses abstrakte model wird auch durch den onepage Checkout zugegriffen. Nun musst du über ein eigenes Modul das Model app/code/Core/Mage/Customer/Model/Address.php überlagern und die Validierungsmethode anpassen. Ebenso musst die die entsprechenden Models aus dem Onepage Checkout überlagern und hier deine Validierungsmethode anpassen.

Grüsse

Stefan

 
Magento Community Magento Community
Magento Community
Magento Community
 
andyk123
Member
 
Total Posts:  36
Joined:  2008-02-04
 

super, hat funktioniert...DANKE!!!

 
Magento Community Magento Community
Magento Community
Magento Community
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Wenn du nun im Template den Part “required-entry” entfernst erfolgt keine JS Validierung mehr.

Magento validiert die Pflichtfelder ebenfalls serverseitig. Für die Kundenadresse ist das das Model app/code/core/Mage/Customer/Model/Address/Abstract.php, hier die Methode validate(). Auf dieses abstrakte model wird auch durch den onepage Checkout zugegriffen. Nun musst du über ein eigenes Modul das Model app/code/Core/Mage/Customer/Model/Address.php überlagern und die Validierungsmethode anpassen. Ebenso musst die die entsprechenden Models aus dem Onepage Checkout überlagern und hier deine Validierungsmethode anpassen.

Hi,

ich habe exakt das gleich Problem, muss aber leider zugeben, dass ich es auch nach X Std. rumprobieren, googlen etc. nicht hinbekommen.

Hier meine Dateien, mit Bitte um Hilfe:

code/local/ST/Mycustomer/etc/config.xml:

<?xml version="1.0"?>
<config>
    <
modules>
        <
ST_Mycustomer>
            <
version>0.1.0</version>
        </
ST_Mycustomer>
    </
modules>
    <global>
        <
models>
            <
mycustomer>
                <class>
ST_Mycustomer_Model</class>
            </
mycustomer>
            <
customer>
                <
rewrite>
                    <
address>ST_Mycustomer_Model_Address</address>
                </
rewrite>
            </
customer>
        </
models>
    </global>
</
config>

code/local/ST/Mycustomer/Model/Mycustomer.php:

<?php

class ST_Mycustomer_Model_Mycustomer extends Mage_Customer_Model_Customer // oder: Mage_Core_Model_Abstract ?
{

}

?>

code/local/ST/Mycustomer/Model/Address.php:

<?php

class ST_Mycustomer_Model_Address extends Mage_Customer_Model_Address
{

    
public function validate()
    
{
        
...
    
}

}

?>

/app/etc/modules/ST_All.xml:

<?xml version="1.0"?>
<config>
    <
modules>
        <
ST_Mycustomer>
            <
active>true</active>
            <
codePool>local</codePool>
        </
ST_Mycustomer>
    </
modules>
</
config>

Vielen Dank für jede Hilfe und Gruss,

Hendrik

 
Magento Community Magento Community
Magento Community
Magento Community
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Hallo,

sorry, ich will nicht nerven. Wollte nur noch anmerken, dass ich mich auch über eine alternative Lösung für das Problem freuen würde (Dateien, Ansätze usw.). Hauptsache ich komme überhaupt irgendwie weiter…

Gruss,

Hendrik

 
Magento Community Magento Community
Magento Community
Magento Community
 
mzentrale1
Guru
 
Total Posts:  731
Joined:  2007-12-06
Stuttgart, Germany
 

Hi,

hast du schon mal eine Ausgabe in der addpress.php validate gemacht?
Also der code sieht korrekt aus.

nur das sollte core absract sein

class ST_Mycustomer_Model_Mycustomer extends Mage_Core_Model_Abstract

wird die erweiterung unter ->system->config->advanced angezeigt?

nenne diese Datei mal um

/app/etc/modules/ST_All.xml:

in ST_Mycustomer.xml

Grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Hi,

hast du schon mal eine Ausgabe in der addpress.php validate gemacht?
Also der code sieht korrekt aus.

nur das sollte core absract sein

class ST_Mycustomer_Model_Mycustomer extends Mage_Core_Model_Abstract

wird die erweiterung unter ->system->config->advanced angezeigt?

nenne diese Datei mal um

/app/etc/modules/ST_All.xml:

in ST_Mycustomer.xml

Grüsse

Hi,

erstmal Danke! Ich war ein paar Tage nicht da und kümmere mich jetzt wieder um Magento. Leider bisher mit keinem Erfolg, was das o.g. Problem betriftt..

1) “class ST_Mycustomer_Model_Mycustomer extends Mage_Core_Model_Abstract”
habe ich eingefügt

2) “wird die erweiterung unter ->system->config->advanced angezeigt?”
Ja, wird sie.

3) “ST_All.xml” habe ich in “ST_Mycustomer.xml”

4) Eine Ausgabe wie

class ST_Mycustomer_Model_Address extends Mage_Customer_Model_Address
{

    
public function validate()
    
{
        
echo 'test';
        return array();
    
}

}
bewirkt gar nichts.

Hat noch jemand eine Idee? Sonst muss ich’s im Core ändern, und das wollen wir doch alle nicht wink

Gruss,

Hendrik

Image Attachments
magento.gif
 
Magento Community Magento Community
Magento Community
Magento Community
 
ikk0
Jr. Member
 
Total Posts:  16
Joined:  2008-07-28
 

Hat das nun jemand hingekriegt? Wäre auch interessiert!

 
Magento Community Magento Community
Magento Community
Magento Community
 
caos989
Sr. Member
 
Total Posts:  96
Joined:  2008-07-25
Linz, Austria
 

ist es möglich das in der neusten Version die Dateistruktur anders ist?

Ich finde die Datei nicht app/code/core/Mage/Customer/Model/Address/Abstract.php

Ich habe jetzt in app\design\frontend\default\default\template\checkout\onepage\billing.phtml class="required-entry input-text” auf class="input-text" geändert. Es wird jetzt zwar nicht angezeigt das es ein Pfichtfeld ist aber wenn man nichts eingibt und auf weiter klickt kommt trotzdem die Fehlermeldung das es ausgefühlt werden muss. Auch wenn man ein Feld komplett entfernt

 
Magento Community Magento Community
Magento Community
Magento Community
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Hallo,

in Magento 1.1.2 liegt die Datei definitiv in app/code/core/Mage/Customer/Model/ (dann entweder Address.php oder Address/Abstract.php). Die Address.php erweitert ja die Abstract.php, daher sollte es egal sein (man korrigiere mich, wenn ich falsch liege) welche Datei man überschreibt. Wenn Du es im Core ändern willst ändere die Funktion “validate” in Address/Abstract.php wie folgt:

public function validate()
    
{
        $errors 
= array();
        
$helper Mage::helper('customer');
        
$this->implodeStreetAddress();
        if (!
Zend_Validate::is($this->getFirstname(), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter first name.');
        
}

        
if (!Zend_Validate::is($this->getLastname(), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter last name.');
        
}

        
if (!Zend_Validate::is($this->getStreet(1), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter street.');
        
}

        
if (!Zend_Validate::is($this->getCity(), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter city.');
        
}

        
if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter telephone.');
        
}

        
if (!Zend_Validate::is($this->getPostcode(), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter zip/postal code.');
        
}

        
if (!Zend_Validate::is($this->getCountryId(), 'NotEmpty')) {
            $errors[] 
$helper->__('Please enter country.');
        
}


//        if ($this->getCountryModel()->getRegionCollection()->getSize()
//               && !Zend_Validate::is($this->getRegionId(), 'NotEmpty')) {
//            $errors[] = $helper->__('Please enter state/province.');
//        }

        
if (empty($errors)) {
            
return true;
        
}
        
return $errors;
    
}

Warum das mit dem Ãœberschreiben nicht klappt, ist mir nach wie vor ein Rätsel. Einen Block in einem anderen Modul konnte ich problemlos überschreiben…

Gruss,

Hendrik

 
Magento Community Magento Community
Magento Community
Magento Community
 
caos989
Sr. Member
 
Total Posts:  96
Joined:  2008-07-25
Linz, Austria
 

Habe die datei Abstract.php endlich gefunden
Die Ordnerstruktur verwirt mich noch immer wink

Es funktioniert aber noch immer nicht.
Der “Dies ist ein Pflichtfeld.” Fehler ist weg man kann aber trotzdem nicht die Bestellung fortsetzen weil folgender Fehler kommt:
“Please enter telephone.
Please enter state/province.
OK”

Muss man noch etwas ändern?

 
Magento Community Magento Community
Magento Community
Magento Community
 
mzentrale1
Guru
 
Total Posts:  731
Joined:  2007-12-06
Stuttgart, Germany
 

Hi,

soweit ich weiss können abstrakte klassen nicht überschrieben werden!
Also muss du die address überschreiben und da den angepassten validierungscode einfügen.

Grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
caos989
Sr. Member
 
Total Posts:  96
Joined:  2008-07-25
Linz, Austria
 
[m><p> zentrale” date= -

soweit ich weiss können abstrakte klassen nicht überschrieben werden!
Also muss du die address überschreiben und da den angepassten validierungscode einfügen.

Grüsse

Habe ich das jetzt richtig verstanden dass ich IN die address.php den validierungscode einfügen?
Aber an welcher stelle und soll der code der gleiche sein in in der abstract?

oder muss ich es so machen wie tronguy und ein eigenes Modul erstellen? Habe das heute versucht aber leider erfolglos....

 
Magento Community Magento Community
Magento Community
Magento Community
 
scree
Sr. Member
 
Avatar
Total Posts:  137
Joined:  2008-07-14
Linz
 
|m|zentrale - 12 August 2008 03:35 AM

soweit ich weiss können abstrakte klassen nicht überschrieben werden!

hi,

gibt es hierfür einen beleg?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Chrome-deluxe
Jr. Member
 
Total Posts:  15
Joined:  2008-06-17
 

Hallo,
ich habe das gleiche Problem. Nachdem ich in der abstract.php die Zeilen auskommentiert habe, passierte aber leider nichts. Wenn ich auf adresse bearbeiten gehe muss ich immer noch ein bundesland eingeben. Die Erklärung mit dem Validierungscode in der adress.php habe ich leider nicht verstanden. Kann mir da jemand auf die Sprünge helfen?

TX Stefan

 
Magento Community Magento Community
Magento Community
Magento Community
 
skeptic35
Jr. Member
 
Total Posts:  10
Joined:  2008-11-25
 

Uff! Das hat Nervern gekostet, habe es jetzt aber hinbekommen.
Mein Problem war genau das gleiche: Ich wollte keine Eingabeprüfung für Telefon und Bundesland.
Die Javascript Prüfung abzuschalten war der einfache Teil. Dann aber hatte ich die gleichen Probleme wie wohl die meisten hier: Meine überladene Klasse schien einfach nicht zu funktionieren.
Das hatte ich:
- Eine Klasse “Mycode_Customer_Model_Address” als Ableitung von “Mage_Customer_Model_Address” in app/code/local/Mycode/Customer/Model/Address.php, darin enthalten eine Kopie der Funktion validate() bei der die Prüfung für Adresse und Bundesland entfernt ist.

- config.xml in app/code/local/Mycode/Customer/etc, Inhalt:

<config>
    <global>
        <
models>
            <
customer>
                <
rewrite>
                    <
address>Mycode_Customer_Model_Address</address>
                </
rewrite>
            </
customer>
        </
models>
    </global>
</
config>

- Mycode_All.xml in app/etc/modules, Inhalt:

<config>
    <
modules>
        <
Mycode_Customer>
            <
active>true</active>
            <
codePool>local</codePool>
        </
Mycode_Customer>
    </
modules>
</
config>

Nur zur Info: das ist soweit alles richtig, die XML-Files stimmen und die Klasse wird auch überladen. Nur eben nicht beim Checkout. Da nämlich kommt nicht Mage_Customer_Model_Address zum Einsatz sondern Mage_Sales_Model_Quote_Address die ebenfalls direkt(!) von Mage_Customer_Model_Address_Abstract abgeleitet wird (letztere enthält die lästige validate Funktion die darauf besteht Telefonnummer und Bundesland zu prüfen). Nachdem ich das rausgefunden hatte war der Rest einfach. Dazu gekommen ist jetzt noch folgendes:
- Eine Klasse Mycode_Sales_Model_Quote_Address als Ableitung von Mage_Sales_Model_Quote_Address in app/code/local/Mycode/Sales/Model/Quote/Address.php, darin enthalten die “verschlankte” validate Funktion.
- config.xml in app/code/local/Mycode/Sales/etc, Inhalt:

<config>
    <global>
        <
models>
            <
sales>
                <
rewrite>
                    <
quote_address>Mycode_Sales_Model_Quote_Address</quote_address>
                </
rewrite>
            </
sales>
        </
models>
    </global>
</
config>

- Zusätzlicher Eintrag in Mycode_All.xml:

<Mycode_Sales>
            <
active>true</active>
            <
codePool>local</codePool>
        </
Mycode_Sales>

Tja, und damit ist die Eingabeprüfung jetzt tatsächlich abgeschaltet ohne, dass ich an den core code ran musste.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top
Page 1 of 5