Fuelphp:モジュール化をする時の方法

FuelphpMVCモジュール化する時の設定方法をメモします。

開発を進めていくとファイルが膨大になってしまって、開発効率が落ちることがあります。
モジュール化することでMVCをまとめることができるので、開発する時にファイル等を参照しやすくなります。

また、ディレクトリごとコピーしてしまえば簡単に複製することができるので、開発効率も上がると思います。

FuelphpMVCモジュール化する場合の記述方法設定方法等を下記に記載します。


Fuelphpでモジュール化する方法

Fuelphpのディレクトリ構造はモジュール化をしない場合、
下記のような構造になっています。

fuelphp_module_1

モジュール化する場合は「modules」ディレクトリの中にモジュールごとに設置します。
今回は「hoge」というモジュールを作成しています。

fuelphp_module_2

コントローラー、モデル、ビューをモジュール内に設置します。


config.phpの設定

モジュール化を設定する為に「/fuel/app/config/config.php」を編集します。
下記のように「module_paths」を設定します。
※複数設定することも可能です。

	'module_paths' => array(
		APPPATH.'modules'.DS
	),

namespaceを設定

コントローラー、モデルにnamespaceを記述します。
下記は「hoge」というモジュールを作成した場合です。

※namespaceはモジュール名と同じにしてください。

controller

<?php

namespace Hoge;

use Hoge\Model\Hoge;

class Controller_Hoge extends \Controller_Template
{

model

<?php

namespace Hoge\Model;

class Hoge extends \Model {

モジュールの外にあるクラスを呼ぶ場合は、「\」を付けます。
下記のように「\」を先頭に記述します。

※モジュール内のクラスを呼ぶとき以外は全て付与しないとエラーになります。

\Uri::segment(1);

モジュール化を使用した方がファイルが参照しやすくなるので、とても便利です。
大きいプロジェクトなどでは最初の段階で設定しておいた方がいいと思います。

jQuery:HTMLの要素にclassを追加・削除する方法

jQueryを使用してHTML要素class追加削除をしたい場合があります。

クリックやマウスオーバーした時などにスタイルを変更したい場合、
HTMLの要素のclassを変更すれば用意しておいたスタイルに変えることができます。

下記にjQueryの「addClass」「removeClass」「toggleClass」メソッドを使用して、
HTMLの要素にclassを追加したり、削除したりする方法をメモします。


addClass

指定したHTMLの要素にclassを追加します。

$('要素').addClass('クラス名');

removeClass

指定したHTMLの要素のclassを削除します。

$('要素').removeClass('クラス名');

toggleClass

指定したHTMLの要素のclassがなければ追加し、ある場合は削除します。

$('要素').toggleClass('クラス名');

使用例(toggleClass)

toggleClassを使用してマウスオーバーした時にclassを追加・削除をした場合です。

JS

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $("#sample").mouseover(function(){
        $(this).toggleClass('hoge');
    });
});
</script>

HTML

<div id="sample">
サンプル
</div>

「hoge」クラスのCSSを用意しておけば、スタイル変更することができます。


複数クラスを追加・削除する場合はスペースで区切ると複数指定することができます。

$('要素').addClass('クラス名 クラス名');

HTML:HTML5のrequired属性で必須チェック

HTML5でinput要素にrequired属性を設定すると値が存在するかを判定し、必須のチェックをすることができます。

html5_required

※Firefox24.0
※ブラウザによって表示が違います。

指定の仕方はinput要素にrequired属性を記述するだけです。

required="required"

しかし、ブラウザのバージョンや対応していないブラウザもあるようなので、バリデーションの処理はしっかり行う必要があります。

HTML5でinput要素にrequired属性を設定し、必須チェックを行った時の方法をメモします。


■ required属性

submit時に必須チェックを行い、エラーメッセージを出力します。


■ required属性で必須チェック

input要素にrequired属性を設定します

<form action="" method="post">

    <input type="text" name="hoge" value="" required="required" />
    <br>
    <input type="submit" name="save" value="保存" />

</form>

値を入力せずにサブミットすると下記のようにエラーメッセージが表示されます。

html5_required


「input」以外にも「textarea」や「select」でも設定することができます。

CPI:CPIでベーシック認証を設定する方法

CPIのサーバで「.htaccess」「.htpasswd」をサーバにアップロードしてベーシック(Basic)認証を設定しようとした時にうまく動作しませんでした。

コントロールパネルからベーシック認証を設定することもできるみたいですが、テストサイトでしか設定できないのでしょうか???

cpi_basic

色々調べてみるとコントロールパネルにある「プログラムのパスとサーバの情報」画面に記述されている「httpドキュメントルート」のファイルパスでベーシック認証を設定しようするとうまく動作しないようです。

ベーシック(Basic)認証をする際のファイルパス

【修正前】

/usr/home/ユーザID/html

【修正後】

/home/ユーザID/html/

また、もう一つ問題があり、CPIサーバではパスワードの暗号化はCRYPTではなくMD5で暗号化したパスワードを使用するそうです。

MD5形式のパスワード取得(ベーシック認証)

サーバにSSHでログインし、下記のコマンドを実行します。

htpasswd -nbm username password

-n:結果のみを出力。(テスト用)
-b:コマンドライン引数として指定
-m:MD5形式でハッシュ

出力結果を「.htpasswd」に記述し、サーバにアップロードします。


上記二つの設定をしたところ、正常にベーシック認証を設定することができました。

下記のサイトを参考にさせていただきました。
ありがとうございました。

CPI レンタルサーバの Basic 認証パスワードでハマる

EC-CUBE:EC-CUBEで独自のページを作成する方法

EC-CUBEで管理画面から静的なページを作成することはできますが、システムを入れたい時などオリジナル独自のページを作成したい場合があります。

あまりしないことだと思うので忘れないように記載します。

EC-CUBEカスタマイズして独自のページを作成した時の方法をメモします。

※バージョンによって違うかもしれません。


EC-CUBEで独自のページを作成

「/sample/index.php」を作成する場合

※aboutsページ(当サイトについて)をコピーして追加した時の方法を記述します。

下記4つのファイルをコピーします。

/html/abouts/index.php
/data/class/pages/abouts/LC_Page_Abouts.php
/data/class_extends/page_extends/abouts/LC_Page_Abouts_Ex.php
/data/Smarty/templates/default/abouts/index.tpl

コピーしたファイルを下記のように設置します。
コピーする際にディレクトリ名やファイル名を作成するページの名前で書き換えます。
※aboutsをsampleに変更

/html/sample/index.php
/data/class/pages/sample/LC_Page_Sample.php
/data/class_extends/page_extends/sample/LC_Page_Sample_Ex.php
/data/Smarty/templates/default/sample/index.tpl

ファイルの設置が完了したら、それぞれのファイルの中身を修正します。

/html/sample/index.php

require_once '../require.php';
require_once CLASS_EX_REALDIR . 'page_extends/abouts/LC_Page_Abouts_Ex.php';

$objPage = new LC_Page_Abouts_Ex();
$objPage->init();
$objPage->process();

↓(修正)

require_once '../require.php';
require_once CLASS_EX_REALDIR . 'page_extends/sample/LC_Page_Sample_Ex.php';

$objPage = new LC_Page_Sample_Ex();
$objPage->init();
$objPage->process();

/data/class/pages/sample/LC_Page_Sample.php

class LC_Page_Abouts extends LC_Page_Ex
{

↓(修正)

class LC_Page_Sample extends LC_Page_Ex
{

/data/class_extends/page_extends/sample/LC_Page_Sample_Ex.php

require_once CLASS_REALDIR . 'pages/abouts/LC_Page_Abouts.php';

class LC_Page_Abouts_Ex extends LC_Page_Abouts
{

↓(修正)

require_once CLASS_REALDIR . 'pages/sample/LC_Page_Sample.php';

class LC_Page_Sample_Ex extends LC_Page_Sample
{

/data/Smarty/templates/default/sample/index.tpl

表示したい内容に書き換えます。


上記、修正したファイルをサーバにアップロードすればページを表示することができます。

システムで処理を追加する場合は「LC_Page_Sample.php」のアクションに記述します。

    public function action()
    {
		// 処理を記述
    }

ブロックや携帯ページを独自で追加する時も基本は同じように行います。
ブロックの場合はデータベースに追加する必要があります。