0

我的问题如下:

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

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

我的 LoginsController 登录功能:

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

它总是抱怨缺少登录视图...

如果这不是一个好习惯,请教我;-)

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

4

1 回答 1

0

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

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

$this->autoRender = false;

代替

$this->render('logins/login');

在您的登录控制器中将停止登录控制器尝试专门呈现视图。

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

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

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

有关表单的完整指导,请在此处尝试:http: //book.cakephp.org/2.0/en/core-libraries/helpers/form.html

对于如何做链接蛋糕的方式,试试:http ://book.cakephp.org/2.0/en/core-libraries/helpers/html.html

于 2012-11-25T20:11:38.280 回答