我可以直接两种不同的按键相同的功能控制器的同样的Cake?

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

  •  03-07-2019
  •  | 
  •  

有两个按钮在我cake页,一个注册的新的用户和另一个登录。可以这两个按钮的行动是针对相同的功能控制器,并有相同的观点。ctp的文件?如果是的话,我怎么可以这样做?

有帮助吗?

解决方案

是的,只要设定正确的网址在你的按钮。但我不知道为什么你会这样做。如果这仅仅是关于重新使用的图。ctp然后你不需要使用一个单一的行动只是为使用相同的观点。例如:

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

其他提示

我创建的按钮在我的污物管理的页面允许以"确认(编辑/删除/建立/etc)"或"取消"。我这样做是通过创建2提交的按钮的形式,并给每一个独特的名称。例如:

看码:

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

行动的逻辑:

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
    ...
  }
  ...
}

在另一面,你在本质上砸2动作为一个为了重新使用。 桑德Marechal的解决方案 是更好的。

嗯,是的,为什么不呢?这不仅仅是在表单操作中设置适当的URL吗?或者我错过了什么?

您可以使用隐藏的表单值来表示它是哪个操作。

$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');

不清楚为什么你不想使用2个功能。你基本上必须手动检查它是什么动作,而不是让蛋糕为你做。

在您的控制器中

function process()
{
    if ($this->data['User']['signup'] == 1)
    {
        // process signup
    }
    if ($this->data['User']['login'] == 1)
    {
        // process login
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top