我有以下Auth组件:
@AdditionalCriteria("this.deleted = false")
如您所见,我想使用我的控制器“Veranstalter”(我必须使用非英语单词)
当我想登录时, 无法找到Controller Veranstalter s 控制器。
我该如何解决这个问题?
我的表格如下:
public $components = array(
'Auth' => array(
'loginAction' => array(
'controller' => 'Veranstalter',
'action' => 'login',
),
'authenticate' => array(
'Form' => array(
'userModel' => 'Veranstalter',
'fields' => array(
'ID' => 'ID', //Default is 'username' in the userModel
'Password' => 'Passwort' //Default is 'password' in the userModel
)
)
)
)
);
答案 0 :(得分:2)
auth组件使用loginAction
配置变量exactly as configured:
protected function _unauthenticated(Controller $controller) {
...
$controller->redirect($this->loginAction);
因此,逻辑上,如果您查看的网址不是Auth组件配置中的网址,则不负责。
登录表单的代码:
echo $this->Form->create('Veranstalter', array('action' => 'login'));
将生成此标记:
<form ... action="/veranstalters/login">
^
因为that's how Form::create works。第一个参数是模型的名称,如果选项中未指定网址,则the model name is inflected to know the name of the controller。
因此,最简单的解决方案是在表单选项中指定URL:
echo $this->Form->create('Veranstalter', array('url' => '/veranstalter/login'));
这将生成正确的网址:
<form ... action="/veranstalter/login">
^