[PHP] CakePHP, Pages icm Form Helper

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 12-09 09:14
Ik ben bezig met een webapp. Ik heb een default layout. Gebruikers moeten zich registreren op een aangemaakte page genaamd register.ctp:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
<?php echo $form->create('User', array('controller'=>'users', 'action' => 'register'));?>
    <fieldset>
        <legend><?php __('Add User');?></legend>
    <?php
        echo $form->input('username');
        echo $form->input('email');
        echo $form->input('password');
        echo $form->input('password_confirm');
        echo $form->input('firstname');
        echo $form->input('lastname');
        echo $form->input('allow_mailing');
        echo $form->input('mobile_phone_number');
    ?>
    </fieldset>
<?php echo $form->end('Submit');?>
...

Dit is dus niet een view ala /users/register. Dit formulier is gelijk aan het form dat cake bake ook maakt ahv het User model. Het formulier moet wel submitten naar /users/register, maar wanneer de invoer niet goed moet terug geredirect worden naar het formulier. Dit staat dus in mijn user_controller.php:
PHP:
1
2
3
4
5
6
7
8
9
10
function register() {
    if (!empty($this->data)) {
        $this->User->create();
        if ($this->User->save($this->data)) {
            $this->flash(__('User saved.', true), array('action' => 'index'));
        } else {
            $this->redirect('/register');
        }
    }
}

Er wordt bij foutieve invoer naar de juiste pagina geredirect, maar in het formulier wordt nu niet juist aangegeven welke elementen niet juist waren "This field cannot be left blank".
Wanneer ik
PHP:
1
$this->redirect('/register');
weglaat wordt geredirect naar de register view en wordt dat wel juist weergeven. Maar ik wil dus dat het een page is en niet een view. Dat wil ik omdat de register pagina een andere layout heeft dat standaard voor views gebruikt wordt. Aan mijn pages_controller.php het ik de form helper toegevoegd.

Waarom werkt het niet?

Acties:
  • 0 Henk 'm!

Verwijderd

Wat ik me af vraag is waarom je dit zou willen gebruiken op deze manier.. Ik weet nu niet wat je redenen zijn om een aparte view te gebruiken welke je post naar de normale view. maar ik verwacht dat dit niet de beste manier is. Waarom gebruik je niet gewoon de view die hoort bij het registreren? Dan kan je op 't moment dat het registreren gelukt is een andere view laten parsen. :9

Acties:
  • 0 Henk 'm!

  • Sspruijt
  • Registratie: Mei 2007
  • Laatst online: 12-09 12:33
Volgens moet moet je gewoon niet redirecten in je 'else-blok'. Naar mijn idee zal CakePHP dan gewoon de view (en form) opnieuw renderen met ingevulde waarden opgeslagen in $this->data. De foutmeldingen zijn wellicht ook hierin opgenomen of in de session. Heb nu niet de mogelijkheid om het te testen.

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 22:10
Mijns inziens zijn CakePHP Pages voor statische content, verhaaltjes e.d. Niet voor formulieren.

Als je een view in een andere layout wilt renderen gebruik je $this->layout = 'nieuwe_layout'; (uit m'n hoofd) om een andere layoutfile op te geven.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 12-09 09:14
Jullie hebben helemaal gelijk. Ik wilde inderdaad het register formulier in een andere layout tonen en kwam toen onterecht op pages uit en heb me daar opgericht. Ik heb het nu zoals Ramon voorstelt met $this->layout en gewoon met een view opgelost. Meer een geval van tunnelvisie :) Bedankt.