蛋糕PHP登录元素

蛋糕PHP登录元素,php,cakephp,cakephp-2.0,cakephp-2.1,Php,Cakephp,Cakephp 2.0,Cakephp 2.1,我的问题如下: 我想使用登录元素而不是登录视图。 所以我可以在默认的.ctp中使用登录名。。。我希望用户能够从每个页面登录。它应该是一种下拉菜单 我如何告诉我的控制器使用元素并获取元素数据而不是视图 我的登录控制器登录功能: function login() { $this->set('headline','Melden Sie sich an...'); if($this->request->is('post')) { if($thi

我的问题如下:

我想使用登录元素而不是登录视图。 所以我可以在默认的.ctp中使用登录名。。。我希望用户能够从每个页面登录。它应该是一种下拉菜单

我如何告诉我的控制器使用元素并获取元素数据而不是视图

我的登录控制器登录功能:

function login()
{
    $this->set('headline','Melden Sie sich an...');

    if($this->request->is('post'))
    {
        if($this->Auth->login())
        {
            //$this->redirect($this->Auth->redirect);
            $this->redirect(array('action' => 'index'));
            $this->Session->setFlash('Ihr Login war erfolgreich!');
        }
        else
        {
          //  $this->Session->setFlash('Ihre Email/Passwort ist falsch!' . ' ' . $this->request->data['Login']['email'] . ' ' . $this->request->data['Login']['password']);
            $this->Session->setFlash('Ihre Email/Passwort ist falsch!');
        }
    }
    $this->render('logins/login');
}
我的观点/要素:

<aside id="left">

<div class="whitebox einloggen">
    <div class="rahmen">
        <h2>Login</h2>
        <div class="inside">

  <?php              echo $this->Html->para(null,'Sind Sie bereits als Nutzer registriert?');



    echo $this->Form->create('Login', array('action' => 'login'));

    echo $this->Form->input('email', array ('label' => false, 'type'=>'text','class'=>'text', 'value'=>'E-Mail','id'=>'LoginEmail', 'onfocus'=>"resetinput(this);", 'onBlur'=>"fillinput(this);"));
    echo $this->Form->input('password', array ('label' => false, 'type'=>'text','class'=>'text', 'value'=>'Passwort','id'=>'LoginPassword', 'onfocus'=>"resetinputpw(this);", 'onBlur'=>"fillinput(this);"));
    echo $this->Form->end(array('label'=>'Einloggen','class' => 'button long','type' => 'submit','name'=>'submit'));

    echo $this->Html->para('forgetpw', $this->Html->link('Passwort vergessen?', array('controller' => 'login', 'action' => 'forgotpwd'), array('label' => false, 'class' => 'forgetpw', 'title'=>'Passwort vergessen')));

    echo $this->Html->link('', array('controller' => 'login', 'action' => 'fblogin'), array('class' => 'facebook-button', 'title'=>'Mit Facebook einloggen'));
    ?>

        </div>
    </div>
</div>

登录

我这样调用default.ctp中的元素:

<?php    echo $this->element('/logins/login'); ?>

它总是抱怨缺少登录视图

如果这不是一个好的练习,请另外教我;-)


对不起,我的英语不好,谢谢

您是否尝试过禁用控制器中的视图

如果元素包含在default.ctp中,则添加

$this->autoRender = false;
代替

$this->render('logins/login');
在中,登录控制器将停止登录控制器尝试具体呈现视图

您需要将元素放在Elements目录(在“视图”下),然后将default.ctp中的代码更新为

<?php echo $this->element('login'); ?>

此外,使用cakephp设置链接和表单的方式可能会在元素中帮助您

有关表单的完整指南,请尝试以下内容:


有关如何以蛋糕方式进行链接,请尝试:

非常感谢您的快速回复。我没有使用Cake HTML助手,因为我得到了一个带有自定义css和javascript的自定义HTML模板。除了在视图中使用普通HTML之外,我不知道如何实现它。使用蛋糕式的表单设置方式从来不会按照我的设计看起来的样子来应用我的设计。如何在控制器中禁用登录视图?我是否应该直接在“$this->element('/logins/login');”下调用“$this->autoRender=false;”?您好,您可能想尝试使用此->Html->链接作为链接的最坏情况,以防您必须更改控制器路径。若要禁用视图,请将此->呈现('logins/login')替换为$this->autoRender=false。您不需要在default.ctpAdding$this->autoRender=false中触摸代码;ctp向我显示一个空白站点。如果我使用元素并尝试提交登录,则会显示以下错误:错误:找不到LoginsController::login()的视图。我理解错误,但我不知道如何修复它。我的评论可能不够清楚,您看到缺少的登录视图的原因可能是登录控制器中的$this->render('/logins/login')。我刚刚注意到您的语法对于元素也可能是错误的。元素必须放在“视图”->“元素”中,然后可以使用$this->element('login')访问;仔细检查App/Views/Elements/logins/login.ctp中是否存在该文件,以及该文件是否为ctp扩展名,并确保删除语句中的开头“/”$此->元素('logins/login');