题
有两个按钮在我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
}
}
不隶属于 StackOverflow