Es gibt zwei Schaltflächen in meiner CakePHP-Seite, eine für die Registrierung neuer Benutzer und die andere für die Anmeldung. Kann die Aktion der Schaltfläche auf die gleiche Funktion im Controller gerichtet sein und dieselbe view.ctp-Datei haben? Wenn ja, wie kann ich es tun?Kann ich in einer Steuerung mit derselben Ansicht in CakePHP zwei verschiedene Tasten auf die gleiche Funktion richten?
Antwort
Ja, genau die richtige URL in Ihren Tasten. Aber ich weiß nicht, warum du das tun würdest. Wenn es nur darum geht, die Datei view.ctp erneut zu verwenden, müssen Sie keine einzige Aktion verwenden, nur um dieselbe 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');
}
}
?>
Nun, ja, warum nicht? Ist das nicht nur eine Frage der Einstellung der entsprechenden URL in Ihren Formularaktionen? Oder fehlt mir etwas?
Sie können einen versteckten Formularwert verwenden, um anzugeben, um welche Aktion es sich handelt.
$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 2 Funktionen verwenden möchten. Sie müssen im Grunde manuell überprüfen, welche Aktion es ist, anstatt Kuchen für Sie tun zu lassen.
In Ihrem Controller
function process()
{
if ($this->data['User']['signup'] == 1)
{
// process signup
}
if ($this->data['User']['login'] == 1)
{
// process login
}
}
Ich schaffe Schaltflächen in meiner CRUD Admin-Seiten, die entweder erlauben "Bestätigen (Bearbeiten/Löschen// etc)" oder "Abbrechen". Ich tue dies, indem ich zwei Sende-Buttons im Formular erstelle und jedem einen eindeutigen Namen gebe. Zum Beispiel:
anzeigen Code:
...
$form->submit('Delete', array('name' => 'delete'));
$form->submit('Cancel', array('name' => 'cancel'));
...
Aktion 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, sind Zerschlagung Sie im Wesentlichen zwei Aktionen in eine im Interesse einen Blick auf die Wiederverwendung. Sander Marechal's solution ist besser.
- 1. gleiche Funktion für zwei Tasten in jQuery
- 2. Kann ich zwei verschiedene Pakete in derselben Android-Anwendung haben?
- 3. Zwei verschiedene Yammer-Freigabetasten auf derselben Seite
- 4. Wie führe ich zwei verschiedene ActionResults in ein und demselben Controller in derselben Ansicht aus?
- 5. Model View Presenter - gleiche Ansicht, verschiedene Presenter
- 6. CakePHP-Eine Ansicht zu einer anderen Ansicht Schaltfläche klicken Funktion
- 7. Wie ruft man zwei Modellfunktionen in einer Steuerung auf? LARAVEL
- 8. Kann ich zwei verschiedene Klassen aus derselben JAR-Datei ausführen?
- 9. mehrere Segmente auf die gleiche Ansicht Controller
- 10. C: Zwei verschiedene Arrays Unter Hinweis auf die gleiche Struct
- 11. Funktion auf verschiedene Gruppen in derselben Spalte anwenden
- 12. Zwei GridViews in einer Ansicht
- 13. Gleiche Erklärung zwei verschiedene Arten
- 14. Wie kann ich zwei Spalten in einer Tabelle mit ActiveRecord auf die gleiche Spalte in einer anderen Spalte zeigen?
- 15. Rufen Sie verschiedene Klassen in unterschiedlicher Zeit in derselben Funktion
- 16. Kann ich verschiedene Implementierungen derselben Funktion aus verschiedenen Basisklassen implementieren?
- 17. Wie kann ich zwei Werte in HtmlInput Steuerung eingestellt
- 18. Richten Sie Tasten in einem TableRow
- 19. Schienen zwei verschiedene Layout-Vorlagen in der gleichen Steuerung?
- 20. Verschiedene Versionen derselben Bibliothek in Flex mischen
- 21. Kann ich zwei verschiedene Versionen einer Seite in CodeIgniter zwischenspeichern?
- 22. CakePHP 2.x ACL - Steuerung auf Eigentümerebene
- 23. Zugriff auf verschiedene Modelleigenschaften in derselben Ansicht in mvc4 Ist das möglich?
- 24. Eine Webanwendung, die auf verschiedene Datenbanken mit derselben Struktur zugreift
- 25. Asp.net MVC gleiche Ansicht Name, verschiedene Wege
- 26. Können wir in Codeigniter zwei Datenbanken in derselben Ansicht verwenden?
- 27. Wie kann ich Platz zwischen zwei Tasten in derselben div machen?
- 28. Wie gebe ich zwei verschiedene Ansichten von derselben Aktion in ASP.NET MVC zurück?
- 29. Zwei verschiedene Daten aus derselben Tabelle
- 30. Wie kann ich die Ansicht innerhalb der aktuellen Ansicht (auf derselben Seite) zurückgeben?
Dieses Beispiel verwendet zwei verschiedene Funktionen: signup() und login() – ByteNirvana
Guter Punkt. Hmmm. –