■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

トップページにログインフォームを作成したい

 

 1  |  2   | 次のページ>

n1215 > Re: トップページにログインフォームを作成したい @ 2014/8/18 22:26
kemshim 様

なるほどLayout/default.phpに記述されていたんですね。トップページとおっしゃっていたので
Page/index.phpに記述しているものかと勘違いしていました。

jQueryによる記述やプラグインの前にjQuery自体が読み込まれていなければ動かないのは当然ですね……。

Twitter: @n_1215

kemshim > Re: トップページにログインフォームを作成したい @ 2014/8/16 11:22
n1215 様

ご返信いただきありがとうございます。

引用:
ブラウザの機能(たとえばChromeなら要素を検証機能)を用いるとJavaScriptやCSS,ファイル読込のエラーを見ることができます。
ページを読み込んだ時点でブラウザにJavaScriptのエラーは出ていないでしょうか?
またjquery.form-2.94.jsは正常に読み込まれていますか?
ログインボタンを押した後にJavaScriptのエラーが出ていませんか?


ChromeでJavaScriptのエラーをチェックした所、以下のような文章が表示されました。

Uncaught ReferenceError: $ is not defined
You have included the Google Maps API multiple times on this page. This may cause unexpected errors.
Uncaught TypeError: string is not a function 


下記のエラー
Uncaught ReferenceError: $ is not defined

の解決策として、JavaScriptの記述の順番を変えてみたところ、/mypage/members/editのページが表示されるようになりました!

app/webroot/theme/{テーマ名}/Layout/default.phpで、もともとは、
<?php
//変数の設定は本来テンプレート内部に紛れ込まないほうが良いのでファイルの上部にまとめておくのがオススメ

if ($this->Session->check('Message.auth')) {
    $this->Session->flash('auth');
}

// 認証用のプレフィックスをここで指定する
$currentPrefix = 'mypage';

// app/Config/setting.phpの設定を読み込んでいる
$userModel = Configure::read('BcAuthPrefix.' . $currentPrefix . '.userModel');
if (!$userModel) {
    $userModel = 'User';
}
list(, $userModel) = pluginSplit($userModel);
$userController = Inflector::tableize($userModel);
// app/Config/setting.phpの設定を反映して $userModel = Member, $userController = 'members'となるはず
?>

<script type="text/javascript">
    $(function() {

	$("#BtnLogin").click(function(e){

		$("#"+$("#UserModel").html()+"AjaxLoginForm").ajaxSubmit({
			beforeSend: function() {
				$("#Waiting").show();
			},
			url: $("#"+$("#UserModel").html()+"AjaxLoginForm").attr('action'),
			success: function(response, status) {
				if(response) {                            
                                        //クレジット関連の処理を省略
					document.location = response;
				} else {
					$("#AlertMessage").html('ログインに失敗しました。アカウント名、パスワードを確認してください。');
					$("#AlertMessage").fadeIn(500);
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				var errorMessage = '';
				if(XMLHttpRequest.status == 404) {
					errorMessage = '<br />'+'送信先のプログラムが見つかりません。';
				} else {
					if(XMLHttpRequest.responseText) {
						errorMessage = '<br />'+XMLHttpRequest.responseText;
					} else {
						errorMessage = '<br />'+errorThrown;
					}
				}
				$("#AlertMessage").html('ログイン処理に失敗しました。'+errorMessage);
				$("#AlertMessage").fadeIn(500);
			},
			complete: function(){
				$("#Waiting").hide();
			}
		});

		return false;

	});

    });
</script>
<?php $this->BcBaser->element('header') ?>


のように、JavaScriptの後に
<?php $this->BcBaser->element('header') ?>
を記述していたのですが、


<?php
//変数の設定は本来テンプレート内部に紛れ込まないほうが良いのでファイルの上部にまとめておくのがオススメ

if ($this->Session->check('Message.auth')) {
    $this->Session->flash('auth');
}

// 認証用のプレフィックスをここで指定する
$currentPrefix = 'mypage';

// app/Config/setting.phpの設定を読み込んでいる
$userModel = Configure::read('BcAuthPrefix.' . $currentPrefix . '.userModel');
if (!$userModel) {
    $userModel = 'User';
}
list(, $userModel) = pluginSplit($userModel);
$userController = Inflector::tableize($userModel);
// app/Config/setting.phpの設定を反映して $userModel = Member, $userController = 'members'となるはず
?>


<?php $this->BcBaser->element('header') ?>

<script type="text/javascript">
    $(function() {

	$("#BtnLogin").click(function(e){

		$("#"+$("#UserModel").html()+"AjaxLoginForm").ajaxSubmit({
			beforeSend: function() {
				$("#Waiting").show();
			},
			url: $("#"+$("#UserModel").html()+"AjaxLoginForm").attr('action'),
			success: function(response, status) {
				if(response) {                            
                                        //クレジット関連の処理を省略
					document.location = response;
				} else {
					$("#AlertMessage").html('ログインに失敗しました。アカウント名、パスワードを確認してください。');
					$("#AlertMessage").fadeIn(500);
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				var errorMessage = '';
				if(XMLHttpRequest.status == 404) {
					errorMessage = '<br />'+'送信先のプログラムが見つかりません。';
				} else {
					if(XMLHttpRequest.responseText) {
						errorMessage = '<br />'+XMLHttpRequest.responseText;
					} else {
						errorMessage = '<br />'+errorThrown;
					}
				}
				$("#AlertMessage").html('ログイン処理に失敗しました。'+errorMessage);
				$("#AlertMessage").fadeIn(500);
			},
			complete: function(){
				$("#Waiting").hide();
			}
		});

		return false;

	});

    });
</script>


のようにJavaScriptの前に
<?php $this->BcBaser->element('header') ?>
を記述することで解決しました!

参考)
jQueryで「Uncaught ReferenceError: $ is not defined (anonymous function)」 ― HattaraTecLog : http://teclog.hattara.info/?p=221


何度も何度もご丁寧に回答頂き、本当にありがとうございました!

<動作環境>
■ BaserCMSのバージョン:3.0.5.1
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: OFF
■ 設置フォルダ: 分かりません…
■ 利用しているデータベース: MySQL

n1215 > Re: トップページにログインフォームを作成したい @ 2014/8/12 20:10
kemshim 様

3.0.2ではログインはAjaxで処理されるのでブラウザ上で/mypage/members/ajax_loginに移動することは実際にはありません。

表示されているページはログイン後にリダイレクトされるべきページのURLが表示されていますね。
本来はページ遷移なしにAjaxリクエストの返り値としてこの値を受け取り、/mypage/members/editに遷移するというのがAjaxによるログイン処理の流れです。

何らかの原因でAjaxによるフォームの送信が行えず、
通常のHTMLのフォームのPOSTが行われ、画面が/mypage/members/ajax_loginに遷移してしまっているものと推測します。

ブラウザの機能(たとえばChromeなら要素を検証機能)を用いるとJavaScriptやCSS,ファイル読込のエラーを見ることができます。
ページを読み込んだ時点でブラウザにJavaScriptのエラーは出ていないでしょうか?
またjquery.form-2.94.jsは正常に読み込まれていますか?
ログインボタンを押した後にJavaScriptのエラーが出ていませんか?


※他のIDでの試行結果も書かれていますが、会員ページにすでにログインした状態になっているためだと思います。



引用:
action属性とは、こちらのことでしょうか。

違います。PHPが出力したHTMLソースの話です。おそらくaction属性は正しそうなのでこれはもういいです。



参考:正常な場合の処理
lib/Baser/Config/setting.php(ないしこれをコピーしたファイルapp/Config/setting.php)に会員ページログイン後のリダイレクト先が指定されていますよね?
初期設定のままだと/mypage/members/ajax_loginに向けてAjaxでのログイン処理が成功すると
/mypage/members/editにリダイレクトされるようになっています。

lib/Baser/Config/setting.php
'mypage' => array(
	  'name'			=> 'マイページ',
	  'alias'			=> 'mypage',
	  'loginRedirect'	=> '/mypage/members/edit',
	  'loginTitle'	=> 'マイページログイン',
	  'userModel'		=> 'Member',
	  'loginAction'	=> '/mypage/members/login',
	  'toolbar'		=> false
	  ), 


そしてこのページのテンプレートは下記です。
lib/Baser/View/Members/mypage/edit.php
<h1><?php $this->BcBaser->contentsTitle() ?></h1>


lib/Baser/Controller/MembersController.phpのmypage_editメソッドで
Viewの$pageTitle変数に"メンバーマイページ(デモ)"という値が設定されているので
上記の出力結果はメンバーマイページ(デモ)と表示されるはずですね。

Twitter: @n_1215

kemshim > Re: トップページにログインフォームを作成したい @ 2014/8/12 17:16
n1215 様

ご返信いただきありがとうございます。

引用:
まずプレフィックスの設定($currentPrefix)は'mypage'ではなく'mypege'となっていませんか?


申し訳ありません、フォーラムに入力する際にスペルを誤って入力していたようです。
実際のプレフィックス設定は'mypage'になっております。


引用:
上記が正しく設定されている場合、
"以下のメッセージだけが出るページ"について全く状況が把握できないので詳しく教えてください。


スクリーンショットで撮ったものが以下になります。


↓ここからスクリーンショット

↑ここまで

引用:
・遷移先のページのURLはどうなってますか?


URLは、http://example.com/mypage/members/ajax_login
となっております。

引用:
・トップページのログインフォームのformタグのaction属性に入ってる値を教えてください
 正常な状態では値が/mypage/members/ajax_loginとなるはずです


action属性とは、こちらのことでしょうか。


<?php echo $this->BcForm->create($userModel, array('action' => 'ajax_login', 'url' => array($currentPrefix => true, 'controller' => $userController))) ?>


'ajax_login'となっています。


仮に上記のaction属性に、/mypage/members/ajax_loginと記述した場合、以下のような画面が表示されます。

<動作環境>
■ BaserCMSのバージョン:3.0.5.1
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: OFF
■ 設置フォルダ: 分かりません…
■ 利用しているデータベース: MySQL

n1215 > Re: トップページにログインフォームを作成したい @ 2014/8/12 12:11
kemshim 様

まずプレフィックスの設定($currentPrefix)は'mypage'ではなく'mypege'となっていませんか?


上記が正しく設定されている場合、
"以下のメッセージだけが出るページ"について全く状況が把握できないので詳しく教えてください。

・遷移先のページのURLはどうなってますか?
・トップページのログインフォームのformタグのaction属性に入ってる値を教えてください
 正常な状態では値が/mypage/members/ajax_loginとなるはずです

Twitter: @n_1215

kemshim > Re: トップページにログインフォームを作成したい @ 2014/8/9 12:56
n1215 様


ご丁寧に解説していただき、ありがとうございます!

その方法で、トップページに実装してみると、見た目は希望通りになりました。


ただ、マイページ用のユーザでログインしようとすると、以下のメッセージだけが出るページに遷移します。

/mypege/members/edit



試しに登録していないIDを入れてみても同様の結果になります。


どうすればいいでしょうか…

<動作環境>
■ BaserCMSのバージョン:3.0.5.1
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: OFF
■ 設置フォルダ: 分かりません…
■ 利用しているデータベース: MySQL

n1215 > Re: トップページにログインフォームを作成したい @ 2014/8/8 21:15
kemshim 様

お疲れ様です。
ここまでくれば後はトップページと会員ログインページの差異を調べて詰めるということになってきます。

1.ログインにAjaxを用いる
現バージョン(3.0.2)のbaserCMSは管理画面へのログインをAjaxを利用して行っています。(そのうち通常のPOSTに代わるという話もあります)
→2014.08.12追記:3.0.5.1でPOSTに変わったようです。

AjaxはJavaScriptのXMLHttpRequestというオブジェクトを利用して画面遷移なしにサーバと通信する技術の総称です。
JavaScript(scriptタグの内部)の$("#BtnLogin").click(function(e){}で囲まれる部分がログインボタンを押した時の処理です。
この部分の処理と依存するjQueryプラグインが必要になります。

2.プレフィックスを指定してログイン先を選択する
もう1つ重要なものとして$currentPrefixという変数があります。
これはbaserCMSのControllerからViewに渡されている変数の一つで、URLのプレフィックスを表しています。
通常(プレフィックスなし)は'front'、管理画面なら'admin'、URLのとおりに設定した会員ページならば'mypage'という風になります。
フォームを出力している部分において、この変数と$this->request->params['prefix']の値を利用してログイン先のURLや利用するモデルを選択するようになっています。

該当箇所は
https://github.com/baserproject/basercms/blob/dev-3/lib/Baser/View/Users/admin/login.php
17行目
$userModel = Configure::read('BcAuthPrefix.' . $currentPrefix . '.userModel');


132〜136行目
		<?php if ($currentPrefix == 'front'): ?>
			<?php echo $this->BcForm->create($userModel, array('action' => 'login', 'url' => array('controller' => $userController))) ?>
		<?php else: ?>
			<?php echo $this->BcForm->create($userModel, array('action' => 'login', 'url' => array($this->request->params['prefix'] => true, 'controller' => $userController))) ?>
		<?php endif ?>


150〜154行目
			<?php if ($currentPrefix == 'front'): ?>
				<?php $this->BcBaser->link('パスワードを忘れた場合はこちら', array('action' => 'reset_password'), array('rel' => 'popup')) ?>
			<?php else: ?>
				<?php $this->BcBaser->link('パスワードを忘れた場合はこちら', array('action' => 'reset_password', $this->request->params['prefix'] => true), array('rel' => 'popup')) ?>
			<?php endif ?>

ですね。
トップページでは$currentPrefixは'front'と設定されていますが、/mypage/以下の会員ページにログインしたいのでこちらは'mypage'に変更しておきます。
これで$userModelは'Member'、$userControllerは'members'となり、$this->request->params['prefix']の代わりにプレフィックスを直接記入してやればログイン先が希望するURLになるはずです。


以下がコードの例になります。
<?php
//変数の設定は本来テンプレート内部に紛れ込まないほうが良いのでファイルの上部にまとめておくのがオススメ

if ($this->Session->check('Message.auth')) {
    $this->Session->flash('auth');
}

// 認証用のプレフィックスをここで指定する
$currentPrefix = 'mypage';

// app/Config/setting.phpの設定を読み込んでいる
$userModel = Configure::read('BcAuthPrefix.' . $currentPrefix . '.userModel');
if (!$userModel) {
    $userModel = 'User';
}
list(, $userModel) = pluginSplit($userModel);
$userController = Inflector::tableize($userModel);
// app/Config/setting.phpの設定を反映して $userModel = Member, $userController = 'members'となるはず
?>


<!-- JavaScriptの記述位置はどこでもOK -->


<?php
//Ajaxのフォーム投稿に利用されているjQueryのプラグインを読み込んでおく
$this->BcBaser->js(array('admin/jquery.form-2.94'));
?>
<script type="text/javascript">
    $(function() {

	$("#BtnLogin").click(function(e){

		$("#"+$("#UserModel").html()+"AjaxLoginForm").ajaxSubmit({
			beforeSend: function() {
				$("#Waiting").show();
			},
			url: $("#"+$("#UserModel").html()+"AjaxLoginForm").attr('action'),
			success: function(response, status) {
				if(response) {                            
                                        //クレジット関連の処理を省略
					document.location = response;
				} else {
					$("#AlertMessage").html('ログインに失敗しました。アカウント名、パスワードを確認してください。');
					$("#AlertMessage").fadeIn(500);
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				var errorMessage = '';
				if(XMLHttpRequest.status == 404) {
					errorMessage = '<br />'+'送信先のプログラムが見つかりません。';
				} else {
					if(XMLHttpRequest.responseText) {
						errorMessage = '<br />'+XMLHttpRequest.responseText;
					} else {
						errorMessage = '<br />'+errorThrown;
					}
				}
				$("#AlertMessage").html('ログイン処理に失敗しました。'+errorMessage);
				$("#AlertMessage").fadeIn(500);
			},
			complete: function(){
				$("#Waiting").hide();
			}
		});

		return false;

	});

    });
</script>

<!-- 以下はフォームを設置したい場所へ記述 -->

<!-- 一見不要に見えるがJavaScriptに$userModelの値を受け渡すために利用されている -->
<div id="UserModel" style="display:none"><?php echo $userModel ?></div>
<!-- これは不要なので消しても良い
<div id="LoginCredit" style="display:none"><?php echo $this->BcBaser->siteConfig['login_credit'] ?></div>
-->
<div id="Login">

    <div id="LoginInner">

        <h1><?php $this->BcBaser->contentsTitle() ?></h1>
        <div id="AlertMessage" class="message" style="display:none"></div>
            <?php /* $currentPrefixを決め打ちで設定するのでif節による分岐は不要。
                  $this->request->params['prefix']については定義されていないのでこの値を参照せずに$currentPrefix = 'mypage'で代用*/ ?>
            <?php echo $this->BcForm->create($userModel, array('action' => 'ajax_login', 'url' => array($currentPrefix => true, 'controller' => $userController))) ?>
        <div class="float-left login-input">
            <?php echo $this->BcForm->label($userModel . '.name', 'アカウント名') ?>
            <?php echo $this->BcForm->input($userModel . '.name', array('type' => 'text', 'size' => 16, 'tabindex' => 1)) ?>
        </div>
        <div class="float-left login-input">
            <?php echo $this->BcForm->label($userModel . '.password', 'パスワード') ?>
            <?php echo $this->BcForm->input($userModel . '.password', array('type' => 'password', 'size' => 16, 'tabindex' => 2)) ?>
        </div>
        <div class="float-left submit">
            <?php echo $this->BcForm->submit('ログイン', array('div' => false, 'class' => 'btn-red button', 'id' => 'BtnLogin', 'tabindex' => 4)) ?>
        </div>
        <div class="clear login-etc">
            <?php echo $this->BcForm->input($userModel . '.saved', array('type' => 'checkbox', 'label' => '保存する', 'tabindex' => 3)) ?>
            
            <?php // 上記と同様にムダなif節を省き$currentPrefixを利用 ?>
            <?php $this->BcBaser->link('パスワードを忘れた場合はこちら', array('action' => 'reset_password', $currentPrefix => true), array('rel' => 'popup')) ?>
        </div>
        <?php echo $this->BcForm->end() ?>
    </div>

</div>


長くなりましたが以上でいかがでしょうか。

Twitter: @n_1215

kemshim > Re: トップページにログインフォームを作成したい @ 2014/8/8 15:00
n1215 様


いつもご返信いただきありがとうございます。


引用:
baserCMS(ないしCakePHP)ではURLごとに対応するView(テンプレート)が存在することはご存知ですよね?
テーマに含まれるテンプレートファイルが優先で、テーマに該当するファイルがない場合は
・baserCMSコア lib/Baser/View/以下
・プラグイン lib/Baser/Plugin/{プラグイン名}/View以下
などからテンプレートが選ばれます。


はい、この点に関しては大丈夫です。


引用:
会員ログイン画面は下記URLの通りに実装されているということでいいんですよね?
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=1525&forum=5#forumpost5760


こちらも上記フォーラム通りに実装しています。ログイン・ログアウトできる事も確認済みです。


引用:
変数を設定するには14〜22行目と同じ処理をトップページのテンプレートにも書く必要があります。


上記の処理を、
app/webroot/theme/{テーマ名}/Layouts/default.php
の最初に記載しました。

<?php 
 if ($this->Session->check('Message.auth')) { 
  $this->Session->flash('auth'); 
 } 
 $userModel = Configure::read('BcAuthPrefix.' . $currentPrefix . '.userModel'); 
 if (!$userModel) { 
  $userModel = 'User'; 
 } 
 list(, $userModel) = pluginSplit($userModel); 
 $userController = Inflector::tableize($userModel); ?>


次に、以下のコードのうち、
basercms/login.php at dev-3 · baserproject/basercms · GitHub : https://github.com/baserproject/basercms/blob/dev-3/lib/Baser/View/Users/admin/login.php

128〜157行目のコードを
app/webroot/theme/{テーマ名}/Layouts/default.php
に記述した所、見た目としては問題なく表示されました。


ただ、試しに登録したマイページ用ユーザーでログインしようとすると、以下のエラーが出力されます。

引用:
UsersController のプライベートメソッド
エラー: UsersController::admin_login() には直接アクセスできません。
注意: このエラーメッセージをカスタマイズしたい場合は、 app/View/Errors/private_action.ctp を作成してください
Stack Trace
CORE/Cake/Routing/Dispatcher.php line 185 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 160 → Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse)
APP/webroot/index.php line 151 → Dispatcher->dispatch(CakeRequest, CakeResponse)


ここでまた止まってしまいました。。。

貴重なお時間を頂いているのに、自力で解決できなくて申し訳ありません。


何卒よろしくお願いいたします。

<動作環境>
■ BaserCMSのバージョン:3.0.5.1
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: OFF
■ 設置フォルダ: 分かりません…
■ 利用しているデータベース: MySQL

n1215 > Re: トップページにログインフォームを作成したい @ 2014/8/8 12:18
kemshim 様

baserCMS(ないしCakePHP)ではURLごとに対応するView(テンプレート)が存在することはご存知ですよね?
テーマに含まれるテンプレートファイルが優先で、テーマに該当するファイルがない場合は
・baserCMSコア lib/Baser/View/以下
・プラグイン lib/Baser/Plugin/{プラグイン名}/View以下
などからテンプレートが選ばれます。

詳細は
ファイル読み込みの優先順位 http://basercms.net/manuals/3/programmers/3.html
をご覧ください。

●ログイン画面のテンプレート
会員ログイン画面は下記URLの通りに実装されているということでいいんですよね?
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=1525&forum=5#forumpost5760
baserCMS自体もCakePHP上に構築されていますので、
管理画面やログイン画面にもトップページやブログ投稿のページと同じようにViewテンプレートが存在します。

管理者ログイン画面(http://example.com/admin/users/login) ⇒ lib/Baser/View/Users/admin/login.php
会員ログイン画面(http://example.com/mypage/members/login) ⇒ lib/Baser/View/Members/mypage/login.php

となっています。これらの画面にはすでにログインフォームがありますよね?
なので、これらのページのテンプレートを参考にして真似してはいかがでしょうかということです。

会員ログイン画面のテンプレートには
lib/Baser/View/Members/mypage/login.php

include BASER_VIEWS . 'users' . DS . 'admin' . DS . 'login.php';

とありますが、これは管理者ログイン画面のテンプレートをそっくりそのまま利用している、というだけです。

そして、管理者ログイン画面のテンプレートがこちらです。これが一番参考になるテンプレートとなります。
lib/Baser/View/Users/admin/login.php
https://github.com/baserproject/basercms/blob/dev-3/lib/Baser/View/Users/admin/login.php
長いので全部は掲載しませんが、14〜22行目で$userModelと$userControllerという変数に値が代入されています。

14 if ($this->Session->check('Message.auth')) { 
15 	$this->Session->flash('auth'); 
16 } 
17 $userModel = Configure::read('BcAuthPrefix.' . $currentPrefix . '.userModel'); 
18 if (!$userModel) { 
19 	$userModel = 'User'; 
20 } 
21 list(, $userModel) = pluginSplit($userModel); 
22 $userController = Inflector::tableize($userModel); 

23〜40行目がCSS
42〜122行目までがクレジットの表示などを設定しているJavaScript
そして貴方が掲載しているコードは128〜157行目に相当しますね。
128〜157行目には$userModelと$userControllerという変数が何回か利用されていますが、
この部分をコピー&ペーストするだけではその2つの変数は何も設定されていない、というわけです。

変数を設定するには14〜22行目と同じ処理をトップページのテンプレートにも書く必要があります。

Twitter: @n_1215

kemshim > Re: トップページにログインフォームを作成したい @ 2014/8/7 13:14
n1215 様


返信が遅くなって申し訳ありません。

アドバイス頂いたのち、色々と試してみたのですが、うまく行きませんでした…


恥ずかしながらアドバイスの意味についてご質問なのですが、

引用:
すでに会員ログイン画面を実装されているのであれば、
トップページのテンプレートにおいて、会員ログイン画面のテンプレートと同様の処理を行う
(同じ変数を揃えた上で同じフォームのHTMLを出力する)というだけの話になるかと思います。

/lib/Baser/View/Members/mypage/login.php
が会員ログイン画面のテンプレートですよね。
(テーマ内にこのファイルをコピーしている場合はコピーしたファイル優先ですが)

このテンプレートはデフォルトの状態では、
/lib/Baser/View/Users/admin/login.php
をインクルードするので、ログインフォームの出力は管理ユーザーログイン画面のテンプレートを参考にすればいいことがわかります。



上記のアドバイスのうち、「同じ変数を揃えた上で同じフォームのHTMLを出力する」とは、

	<div id="LoginInner">

		<h1><?php $this->BcBaser->contentsTitle() ?></h1>
		<div id="AlertMessage" class="message" style="display:none"></div>
		<?php if ($currentPrefix == 'front'): ?>
			<?php echo $this->BcForm->create($userModel, array('action' => 'ajax_login', 'url' => array('controller' => $userController))) ?>
		<?php else: ?>
			<?php echo $this->BcForm->create($userModel, array('action' => 'ajax_login', 'url' => array($this->request->params['prefix'] => true, 'controller' => $userController))) ?>
		<?php endif ?>
		<div class="float-left login-input">
			<?php echo $this->BcForm->label($userModel . '.name', 'アカウント名') ?>
			<?php echo $this->BcForm->input($userModel . '.name', array('type' => 'text', 'size' => 16, 'tabindex' => 1)) ?>
		</div>
		<div class="float-left login-input">
			<?php echo $this->BcForm->label($userModel . '.password', 'パスワード') ?>
			<?php echo $this->BcForm->input($userModel . '.password', array('type' => 'password', 'size' => 16, 'tabindex' => 2)) ?>
		</div>
		<div class="float-left submit">
			<?php echo $this->BcForm->submit('ログイン', array('div' => false, 'class' => 'btn-red button', 'id' => 'BtnLogin', 'tabindex' => 4)) ?>
		</div>
		<div class="clear login-etc">
			<?php echo $this->BcForm->input($userModel . '.saved', array('type' => 'checkbox', 'label' => '保存する', 'tabindex' => 3)) ?> 
			<?php if ($currentPrefix == 'front'): ?>
				<?php $this->BcBaser->link('パスワードを忘れた場合はこちら', array('action' => 'reset_password'), array('rel' => 'popup')) ?>
			<?php else: ?>
				<?php $this->BcBaser->link('パスワードを忘れた場合はこちら', array('action' => 'reset_password', $this->request->params['prefix'] => true), array('rel' => 'popup')) ?>
			<?php endif ?>
		</div>
		<?php echo $this->BcForm->end() ?>
	</div>



のうち、どの変数をどちらと揃える必要があるのでしょうか。

本当に初心者の質問ですみません。

<動作環境>
■ BaserCMSのバージョン:3.0.5.1
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: OFF
■ 設置フォルダ: 分かりません…
■ 利用しているデータベース: MySQL

 

 1  |  2   | 次のページ>

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
9 人のユーザが現在オンラインです。 (9 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 9