ポップアップログインフォームにzendとfancyboxを使用していますが、完璧に機能します。問題はログイン時です。現在の親ページではなく、ファンシーボックスをリロードします。そのため、ログインすると、実際にはユーザーページを表示するログインフォームボックス内に表示されます。だから、私はサブミットがファンシーボックスの代わりに親ページでログを押すときに欲しいです。
ここに私のコードがあります:
JavaScript ファンシーボックス:
$('a.iframe').fancybox({
width : 520,
height : 300,
type : 'iframe',
scrolling: 'no',
centerOnScroll: 'true',
onComplete: function() {
$('#fancybox-frame').load(function() {
$('#fancybox-content').height($(this).contents().find('body').height() + 0);
});
}
});
Zend コントローラー:
public function loginFormAction()
{
$this->_helper->layout()->disableLayout();
//$this->_helper->viewRenderer->setNoRender(true);
$email = $this->getRequest()->getParam('email');
$password = $this->getRequest()->getParam('password');
$loginForm = new Application_Form_UserLogin();
if ($this->getRequest()->isPost())
{
/************ Login Form ************/
if ($loginForm->isValid($this->getRequest()->getParams()))
{
$user = $this->_helper->model('Users')->createRow($loginForm->getValues());
$user = $this->_helper->model('Users')->fetchRowByFields(array('email' => $email, 'hash' => $password));
if($user)
{
Zend_Session::rememberMe(86400 * 14);
Zend_Auth::getInstance()->getStorage()->write($user);
$this->getHelper('redirector')->gotoRoute(array(), 'invite');
return;
}
else {
// Error message
$this->view->errorMsg = "<b>password</b> - invalid, please try again! *";
}
}
else
{
// something
}
}
$this->view->loginForm = $loginForm;
}
html フォーム:
<body>
<div id="login" class="">
<div id="login_lb_content">
<h1 class="content_title colorset_orange">Login to your account</h1>
<form action="" method="post" name="loginForm" id="login-form">
<table><tr>
<td colspan="2" class="content_sub_title colorset_gray">Your email address</td>
</tr><tr>
<td colspan="2"><input id="email" type="text" name="email" value="<?php echo $this->loginForm->email->getValue(); ?>" /></td>
</tr><tr>
<td width="120" class="content_sub_title colorset_gray">Your password</td>
<td style="text-align:right;" class="colorset_gray small_font">(It was sent to your email address when you registered)</td>
</tr><tr>
<td colspan="2"><input id="password" type="password" name="password" value="<?php echo $this->loginForm->password->getValue(); ?>" /></td>
</tr><tr>
<td><a id="inline-retreive" href="#retreive" class="content_sub_title colorset_orange fblink">Retreive my password</a></td>
<td><input type="submit" id="btn_login" name="login" value="" /></td>
</tr></table>
<div id="login-error" style="color:red">
<?php if ($this->loginForm->getErrors()): ?>
<?php foreach($this->loginForm->getMessages() as $field => $messages): ?>
<strong><?php echo $field; ?></strong>
<?php foreach($messages as $messageKey => $message): ?>
- <?php echo $message; ?><br />
<?php endforeach; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php echo $this->errorMsg; ?><br />
</div>
</form>
</div>
</div><!-- END div[login panel] -->