2009-04-30 3 views

Antwort

1

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'); 
    } 
} 
?> 
0

Nun, ja, warum nicht? Ist das nicht nur eine Frage der Einstellung der entsprechenden URL in Ihren Formularaktionen? Oder fehlt mir etwas?

0

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 
    } 
} 
+0

Dieses Beispiel verwendet zwei verschiedene Funktionen: signup() und login() – ByteNirvana

+0

Guter Punkt. Hmmm. –

1

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.

Verwandte Themen