Kann ich mit der gleichen Ansicht in CakePHP zwei verschiedene Tasten auf die gleiche Funktion in einer Steuerung lenken?

StackOverflow https://stackoverflow.com/questions/806262

  •  03-07-2019
  •  | 
  •  

Frage

Es gibt zwei Schaltflächen in meiner CakePHP Seite, ein für neue Benutzer und die andere für die Anmeldung zu registrieren. Kann sowohl die Klage der Schaltfläche, um die gleiche Funktion in der Steuerung und haben die gleiche view.ctp Datei gerichtet werden? Wenn ja, wie kann ich es tun?

War es hilfreich?

Lösung

Ja, setzen Sie einfach die richtige URL in Ihren Tasten. Aber ich weiß nicht, warum Sie das tun würden. Wenn es nur um erneut mit dem view.ctp ist dann brauchen Sie keine einzige Aktion verwenden Sie einfach die gleiche Ansicht zu verwenden. Beispiel:

<?php
class FoobarController extends AppController
{
    function view()
    {
        // This will render views/foobar/view.ctp because the action
        // is named "view"
    }

    function register()
    {
        // Normally this would render views/foobar/register.ctp but you can
        // call the render() function manually and render something else. The
        // following call will render views/foobar/view.ctp
        $this->render('view');
    }

    function login()
    {
        // Same thing here...
        $this->render('view');
    }
}
?>

Andere Tipps

Ich schaffe Schaltflächen in meiner CRUD Admin-Seiten, die entweder „Bestätigen (Bearbeiten / Löschen / / etc)“ oder „Abbrechen“ ermöglichen. Ich tue dies, um 2 Erstellen von Senden-Schaltflächen in der Form, und jeder einen eindeutigen Namen zu geben. Zum Beispiel:

Sehen Sie den Code ein:

...
$form->submit('Delete', array('name' => 'delete'));
$form->submit('Cancel', array('name' => 'cancel'));
...

Action-Logik:

function admin_delete( ... ) {

  // Bail if cancel button pressed
  if (isset($this->params['form']['cancel'])) {
    $this->redirect('/');
  }

  // Delete if delete button pressed
  if (isset($this->params['form']['delete'])) {
    // delete stuff
    ...
  }
  ...
}

Auf der anderen Seite, Sie Zerschlagung im Wesentlichen zwei Aktionen in eine im Interesse einen Blick auf die Wiederverwendung. Sander Marechal-Lösung ist besser.

Nun ja, warum nicht? Ist das nicht nur eine Frage der die entsprechende URL in Ihrer Formularaktion einstellen? Oder bin ich etwas fehlt?

Sie können eine versteckte Form Wert verwenden zu bezeichnen, welche Aktion es ist.

$form->create('User', array('action' => 'process');
$form->hidden('User.signup', array('value' => '1'));
$form->end('Signup');

$form->create('User', array('action' => 'process');
$form->hidden('User.login', array('value' => '1'));
$form->end('Login');

Es ist nicht ganz klar, warum Sie nicht wollen, obwohl zwei Funktionen nutzen. Sie werden auf grundsätzlich manuell überprüfen müssen, welche Aktion ist es, statt Kuchen zu lassen, tun es für Sie.

In Ihrem Controller

function process()
{
    if ($this->data['User']['signup'] == 1)
    {
        // process signup
    }
    if ($this->data['User']['login'] == 1)
    {
        // process login
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top