Validierung nur für eine Formular

20 views
Skip to first unread message

Nghi

unread,
Jun 5, 2010, 4:02:18 PM6/5/10
to CakePHP-de für deutsche CakePHP Entwickler
Hallo,


ich arbeite seit 2 Tagen mit CakePHP.
Ich hab in meinem Model eine Validierung, hab aber 2 Formulare, die
nun davon betroffen sind.
Einmal users/add und users/login, was Anmeldung und Login ist.
In Anmeldung werden natürlich mehr Daten abgefragt als in Login.
Wie geb ich dem Model die Information, dass er nur bei users/add
validieren soll?



Lg

Andreas Derksen

unread,
Jun 7, 2010, 11:15:16 AM6/7/10
to cakep...@googlegroups.com
Benutzt du das AuthComponent? Dann brauchst du nur eine leere login(){}
methode im UsersController. Les dir am besten mal das kapitel über die
komponente durch.

-----Ursprüngliche Nachricht-----
Von: cakep...@googlegroups.com [mailto:cakep...@googlegroups.com] Im
Auftrag von Nghi
Gesendet: Samstag, 5. Juni 2010 22:02
An: CakePHP-de für deutsche CakePHP Entwickler
Betreff: [cakephp-de] Validierung nur für eine Formular

Hallo,

Lg

--
Bitte bei Fragen immer auch die aktuell verwendete cakePHP Version angeben
und
wenn möglich auch das verwendete Betriebssystem und die PHP Version. Danke.
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google
Groups-Gruppe "CakePHP-de für deutsche CakePHP Entwickler".
Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an cakep...@googlegroups.com
Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an
cakephp-de-...@googlegroups.com
Weitere Optionen finden Sie in dieser Gruppe unter
http://groups.google.com/group/cakephp-de?hl=de

Nghi

unread,
Jun 7, 2010, 11:20:36 AM6/7/10
to CakePHP-de für deutsche CakePHP Entwickler
Ja, ich nutze den AuthComponent.
Allerdings hab ich im Model allowEmpty => false.
Bisher arbeite ich noch an der Validierung des Anmeldeformulars, aber
ein Logintest hat bisher noch nicht funktioniert.

Allgemein wär es auch interessant zu wissen, wie ich 2 verschiedene
Formulare nutzen kann ohne, dass das Model eine
Fehlermeldung ausgibt, weil ich Felder leer sind.

On 7 Jun., 17:15, Andreas Derksen <andreas.derks...@googlemail.com>
wrote:

Rabie Khabouze

unread,
Jun 7, 2010, 11:33:08 AM6/7/10
to cakep...@googlegroups.com
wie waere es mit Custom validation :

Du kannst folgendes machen : in Model :

class User extends AppModel {
// fuer normale validierung
var $validate = array( ... );
// Benuzt in edit action wie /users/edit/1
var $validateEdit = array( ... );
// benutzt in forgotpassword action wie /users/forgotpassword
var $validateForgotpassword = array( ... );

// benutzt in login action wie /users/login
var $validateLogin = array( ... );

}

In Controller sieht so aus :

class UsersController extends AppController {
function forgotpassword() {
$this->User->set($this->data);
$this->User->validationSet = 'forgotpassword';
if ($this->User->validates()) {
// mach was
}
}

function login() {
$this->User->set($this->data);
$this->User->validationSet = 'login';
if ($this->User->validates()) {
// mach was
}
}
function add() {
$this->User->set($this->data);
$this->User->validationSet = 'add';
if ($this->User->validates()) {
// mach was
}
}

}


function validates($options = array()) {
// copy the data over from a custom var, otherwise
$actionSet = 'validate' . Inflector::camelize(Router::getParam('action'));
if (isset($this->validationSet)) {
$temp = $this->validate;
$param = 'validate' . $validationSet;
$this->validate = $this->{$param};
} elseif (isset($this->{$actionSet})) {
$temp = $this->validate;
$param = $actionSet;
$this->validate = $this->{$param};
}

$errors = $this->invalidFields($options);

// copy it back
if (isset($temp)) {
$this->validate = $temp;
unset($this->validationSet);
}

if (is_array($errors)) {
return count($errors) === 0;
}
return $errors;
}


2010/6/5 Nghi <Ng...@hotmail.de>:

Nghi

unread,
Jul 29, 2010, 5:05:05 AM7/29/10
to CakePHP-de für deutsche CakePHP Entwickler
Hi,

vielen Dank für die Lösung.
Ich bekomm jedoch eine Fehlermeldung:
Undefined variable: validationSet [APP\models\user.php, line 404]
Ich hab ein wenig rumprobiert, aber ic hweiß nicht, was da hinsoll.

Lg
> 2010/6/5 Nghi <N...@hotmail.de>:

Nghi

unread,
Jul 29, 2010, 5:11:01 AM7/29/10
to CakePHP-de für deutsche CakePHP Entwickler
Hab die Editier-Funktion nicht gefunden:
Wenn man $validationSet durch $this->validationSet geht es.
Allerdings muss man auch auf Groß und Kleinschreibung achten.
Also entweder:
$this->User->validationSet = 'add';
var $validateadd = array();

oder:

$this->User->validationSet = 'Add';
var $validateAdd = array();

Patrick Erber

unread,
Aug 1, 2010, 9:19:31 AM8/1/10
to cakep...@googlegroups.com
--
Bitte bei Fragen immer auch die aktuell verwendete cakePHP Version angeben und
wenn möglich auch das verwendete Betriebssystem und die PHP Version. Danke.
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe "CakePHP-de für deutsche CakePHP Entwickler".
 Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an cakep...@googlegroups.com
 Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an cakephp-de-...@googlegroups.com
 Weitere Optionen finden Sie in dieser Gruppe unter http://groups.google.com/group/cakephp-de?hl=de


Die Variable Validate im Controller überschreiben für edit?? oder add?? wäre eine weitere möglichkeit

z.B.:

$this->User->validate = array('Deine Validierung');

$this->User->save();

Reply all
Reply to author
Forward
0 new messages