cakephpのテーマシステムを使ったサイトを作る場合
できるだけスタイルシートだけでテーマを表現して欲しい
しかし、viewファイルも使わなくては表現できない、
でも、レイアウトファイルまではさわって欲しくない時、
フラグだけで,表示、非表示を切り換えたり等、色々使える。
2016年8月24日水曜日
[cakehp2] view.ctpの変数をLayouts/default.ctpで参照したい。
2016年8月5日金曜日
cakephp 2.x のテーマ名
テーマを変更するにはコントローラーで
pubulic $theme = 'example';
もしくは
各アクション内で
$this->theme = 'example';
とやれば良いのだが、
テーマ名が小文字の場合でもView/Themed以下に置くディレクトリ名は、
キャメルケースの先頭大文字、example は Exampleになる。
app/webroot/theme以下にテーマ名のディレクトリの下に css js img
ディレクトリを置けるがこの場合のテーマ名は$this->themeの値そのものになる。
小文字なら小文字、キャメルケースならキャメルケース、
example は example、Example は Exampleになる。
pubulic $theme = 'example';
もしくは
各アクション内で
$this->theme = 'example';
とやれば良いのだが、
テーマ名が小文字の場合でもView/Themed以下に置くディレクトリ名は、
キャメルケースの先頭大文字、example は Exampleになる。
app/webroot/theme以下にテーマ名のディレクトリの下に css js img
ディレクトリを置けるがこの場合のテーマ名は$this->themeの値そのものになる。
小文字なら小文字、キャメルケースならキャメルケース、
example は example、Example は Exampleになる。
2016年7月29日金曜日
[cakephp] 一部のinputに付加されるhiddenフィールドを無効にする
一部の input タイプ(チェックボックス、ラジオボタン)では hidden フィールドが生成されるため、 $this->request->data の中のキーは値を伴わない形式でも 存在する。
これは $options['hiddenField'] = false とすることで無効にできる。
echo $this->Form->checkbox('published', array('hiddenField' => false));
2016年3月22日火曜日
2016年3月14日月曜日
Windows+Apache+Mssql+Php
SQL ServerにApacheとPHPをインストールしてSFTPで編集ができるようにする。
OpenSSHのインストール
最新のOpenSSH-Win64.zipをダウンロードして"C:\opt\OpenSSH"に解凍する
パワーシェルを管理者権限で起動する
SSHキーを設定します
sshdで利用するキーファイルを作成します。
もしくは
ファイアウォールの設定
22番ポートを開放します。
sshdのセットアップ
sshdセットアップ用のcmdを実行します。
リブート
OSの再起動を行います。
sshdサービスへの登録
サービスで起動するようにsshdをサービスに登録します。
sshdサービスを起動
sshdをサービスから起動します。
windows起動時に自動でsshdを起動させたい場合は、こちらを実行
Macからwindowsにsshで接続
ForkLiftで接続してみる
繋がらない
sftpサーバーの設定を忘れていた。
sshd_configを編集する。
これを
下記のようにする
sshd再起動する
Apacheとphp
phpとApacheのVCバージョンは合わせる必要があります。phpがVC11ならApacheもVC11に、phpがVC14だとApacheもVC14とVCが同じでないと正しく動作しない場合があります。
Microsoft Visual C++ 2012 再頒布可能パッケージ (x64)
Apache 2.4.18 Win64とPHP 5.6 VC11 x64 Thread Safeをダウンロードする
httpd-2.4.18-win64-VC11.zipを解凍する。
できたApache24をC:\opt\Apache24に移動
php-5.6.19-Win32-VC11-x64.zipを解凍する。
php-5.6.19-Win32-VC11-x64をC:\opt\phpに変名する。
WindowsのPathにC:\opt\OpenSSH;c:\opt\php;を登録。
php.ini-productionからphp.iniを作製
php.iniを編集
に変更
以下の行のセミコロンを外す
以下の行を追加
以下の行のセミコロンを外し値'Asia/Tokyo'を設定
マイクロソフトのサイトから
SQLSRV32.EXEをダウンロード
もしくは"Microsoft Drivers for PHP for SQL Server"を検索
SQLSRV32.EXEを解凍して
の2つのファイルをc:\opt\php\extに保存します。
Apache httpd.confの編集
ServerRoot、DocumentRoot等を設定します。 以下のコメントを外す 以下の行を追加します
そしてIPアドレスとホスト名を指定します。
ローカルサーバーならこんな感じ。
次にApacheをWindowsのサービスとして登録します。コマンドプロンプトを管理者権限で起動してから、C:\opt\Apache24\binフォルダに移動します。そして httpd -k install と入力すると登録完了です。
ファイアーウォールにWebの設定が無ければ下記を実行
C:\var\www\cakephpにcakephp-2.7.x を解凍
webrootのジャンクションをhtdocsに作る
htdocsに上記をphpinfo.phpで保存する。
2016年2月4日木曜日
[cakephp 2.x] CakePHPのセッション管理をDBに変更する
まず、"cake_sessions"というテーブルを作るのだが
shellが使える環境であれば app/Config/Schema/sessions.php にスクリプトがあるので
とやればテーブルができる。
shellが使えないならばクリエイト文で作る。mysqlならば以下のようになる。
テーブルができたならば次はcare.phpの
を
に変更する。
cakephp-2.7 だと200行目くらいにある。
2014年7月29日火曜日
[cakephp 2.x][TwigView] readme.mdの通りにするとElementsが使えない。
{% element 'hoge' %}とするとhtmlのタグとかは展開されるが変数やヘルパー関数が一切展開されない。 ではどうすればいいのか
{% include 'Elements/fuga.tpl' %}こうすればいいらしい。 ちなみに 込み入った事をするのはやはりctpの方が得意なのでこんな事ができればいいなと思ってやってみたら
{% include 'Elements/fuga.ctp' %}こうするのはやっぱりダメらしい。
2014年3月17日月曜日
[cakephp] Plugin TwitterBootstrapを使ったときのgetCrumbList
以下のようにするとTwitterBootstrap.BootstrapHtmlクラスのメソッドbreadcrumb()の出力と同様になる。
なお、'startText'は2.4から'text'に変わっているので注意する
なお、'startText'は2.4から'text'に変わっているので注意する
<?php echo $this->Html->getCrumbList( array( 'separator' => ' <span class="divider">/</span>', 'class' => 'breadcrumb'), array('text' => 'ホーム', ) ); ?>
2014年3月11日火曜日
さくらのレンタルサーバーでcakephpのBASIC認証が使えない訳
やらない方がいいと思うんだけど条件つきで
参考:
PHP による HTTP 認証
Basic認証でのログアウトの仕方
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /sandbox RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] # CGI版PHP用 BASIC認証の為 # CGI版PHPでは$_SERVER[’PHP_AUTH_USER’]と$_SERVER[’PHP_AUTH_PW’]が参照できない。 # でも下記の3行を追加すると使えるようになる RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] </IfModule>
参考:
PHP による HTTP 認証
Basic認証でのログアウトの仕方
2014年2月27日木曜日
Mountain Lion でApache Mysql Php環境の構築
目標はphpのフレームワークが動作できることとする。
参考にしたのは下記のページ http://coolestguyplanettech.com/downtown/install-and-configure-apache-mysql-php-and-phpmyadmin-osx-108-mountain-lion
ターミナルで下記のようにする
ターミナルで
ブラウザーでhttp://localhostを開きます。

このように表示されたらOKです
このシステムレベルのドキュメントルートは"/Library/WebServer/Documents/"にあります。
次にユーザーのホームフォルダーに「Sites」フォルダーを作りその中に「index.html」ファイルを作ります
以下{username}はご自分のユーザー名に置き換えて下さい
/Users/{username}/Sites/index.html

「index.html」ファイルの中身は
等適当に
"/etc/apache2/users"に{username}.confがあるかどうか確認する。
上記の絵の場合"fujisan"というアカウントなので"fujisan.conf"ができています。
ない場合は作ります。
ターミナルで
ターミナルで

"/etc/apache2/httpd.conf"を編集します。
ついでに".htaccess"を有効にします。
編集前にオリジナルをバックアップします。

"AllowOverride None"を"AllowOverride all"に変更します。
次に以下の行を探します。
Apacheを再起動します
ターミナルで
ファイル名は"phpinfo.php"で以下の内容を入力します。

Mac OS 10.8 にインストールされているデフォルトの PHP には timezoneが空白なのでdate関係の関数はエラーするのでtaimezoneを設定します。まず、php.ini が存在しないので、 php.ini.defaultをコピーして作成する
1010行目あたりの「;date.timezone = 」のセミコロンを外し「"Asia/Tokyo"」を入力する。
この5.3でもほとんどの物は動作しますが5.4や5.5にしたい方はhttp://php-osx.liip.ch/ を参考にしてインストールします。必要なエクステンションもすべてインストールされますので、手間いらずです
インストール処理でsudoを使っているので、パスワードの入力を求められますので、パスワードを入力して進めて下さい
最後にインストールした方のシンボリックリンクが"/usr/local/php5"にできます。
"/etc/apache2/other/+php-osx.conf"が追加されているのでapacheを再起動すると

このようにすぐ使えます。
設定を変更する際は php.ini を直接変更するのではなく、新たに差分 ini ファイルを作成して変更箇所だけを記載するのが良い。
ディフォルトでタイムゾーンが"Europe/Zurich"になっているので"Asia/Tokyo"に変更します。
名前を変えるといっても拡張子が.confであるとダメなので"+php-osx.conf.none"します。
"/etc/apache2/httpd.conf"にある "# LoadModule php5_module libexec/apache2/libphp5.so"のコメントを解除する。
phpがいらないなら /usr/local/php5* と /usr/local/packager を削除する
ダウンロード時にはアカウントの登録を求められるが特に費用は掛からない。
Mountein Lion のMacならほぼ64-bitなので「Mac OS X 10.X (x86, 64-bit), DMG Archive(mysql-5.X.XX-osx10.X-x86_64.dmg)」をダウンロードする。

ダウンロードしたファイルをマウントしたら、次の順番でインストールする。
システム環境設定にMySql開始停止操作のペインが付きます。
phpMyAdminから「phpMyAdmin-x.x.x-all-languages.zip」をダウンロードします。
トップページにある
をクリックすると最新版がダウンロードされます。
ダウンロードしたZipファイルを"/Library/WebServer"にコピー、解凍して、
シンボリックリンク"phpMyAdmin"を作ります。
"config.sample.inc.php"を"config/config.inc.php"にコピーして、"config"フォルダーごとグループ書き込みを許可します。
http://localhost/phpMyAdmin/setup をクリックするとコンフィグレーションファイルの編集ができます。
通常はhttp://localhost/phpMyAdminをクリックする。
参考にしたのは下記のページ http://coolestguyplanettech.com/downtown/install-and-configure-apache-mysql-php-and-phpmyadmin-osx-108-mountain-lion
Apache
まずはApacheのバージョン確認ターミナルで下記のようにする
$ httpd -v下記のように表示されたらOKです
Server version: Apache/2.2.24 (Unix) Server built: Jul 7 2013 18:05:17Apacheをスタートさせます
ターミナルで
$ sudo apachectl startパスワードを聞いてきますので入力します
ブラウザーでhttp://localhostを開きます。

このように表示されたらOKです
このシステムレベルのドキュメントルートは"/Library/WebServer/Documents/"にあります。
次にユーザーのホームフォルダーに「Sites」フォルダーを作りその中に「index.html」ファイルを作ります
以下{username}はご自分のユーザー名に置き換えて下さい
/Users/{username}/Sites/index.html

「index.html」ファイルの中身は
等適当に
"/etc/apache2/users"に{username}.confがあるかどうか確認する。

上記の絵の場合"fujisan"というアカウントなので"fujisan.conf"ができています。
ない場合は作ります。
ターミナルで
$ cd /etc/apache2/users $ sudo nano {username}.confエディターが起動したら下記を入力する。 もしくはGuest.confをコピーして{username}部分だけを変更しても良い
ターミナルで
$ sudo cp Guest.conf {username}.conf $ sudo nano {username}.confApacheを再起動する ターミナルで
$ sudo apachectl startブラウザーで以下のURLを表示させる。
http://localhost/~{username}/

PHP
次にPHPを使えるようにします。 ターミナルで$ php -v
PHP 5.3.28 (cli) (built: Jan 23 2014 18:02:48) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend TechnologiesこのようにPhpは入っていますがそのままでは使えませんので。
"/etc/apache2/httpd.conf"を編集します。
ついでに".htaccess"を有効にします。
編集前にオリジナルをバックアップします。
$ cd /etc/apache2 $ sudo cp httpd.conf httpd.conf.original $ sudo nano httpd.conf以下の行を探します。
AllowOverride None

"AllowOverride None"を"AllowOverride all"に変更します。
次に以下の行を探します。
#LoadModule php5_module libexec/apache2/libphp5.so"#"を削除して保存します。
Apacheを再起動します
ターミナルで
$ sudo apachectl start先ほどの「Sites」にファイルを一つ作ります。
ファイル名は"phpinfo.php"で以下の内容を入力します。
<?php phpinfo();?>ブラウザーで http://localhost/~{username}/phpinfo.php を表示させます。

Mac OS 10.8 にインストールされているデフォルトの PHP には timezoneが空白なのでdate関係の関数はエラーするのでtaimezoneを設定します。まず、php.ini が存在しないので、 php.ini.defaultをコピーして作成する
sudo cp /etc/php.ini.default /etc/php.ini sudo nano /etc/php.ini

1010行目あたりの「;date.timezone = 」のセミコロンを外し「"Asia/Tokyo"」を入力する。
この5.3でもほとんどの物は動作しますが5.4や5.5にしたい方はhttp://php-osx.liip.ch/ を参考にしてインストールします。必要なエクステンションもすべてインストールされますので、手間いらずです
PHP 5.5 (Current stable)
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5
PHP 5.4 (Old stable)
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4どちらか一つでも両方でもOK
インストール処理でsudoを使っているので、パスワードの入力を求められますので、パスワードを入力して進めて下さい
最後にインストールした方のシンボリックリンクが"/usr/local/php5"にできます。
"/etc/apache2/other/+php-osx.conf"が追加されているのでapacheを再起動すると

このようにすぐ使えます。
php.ini
php.ini ファイルは /usr/local/php5/lib/php.ini です。また、拡張毎の差分 ini ファイルが /usr/local/php5/php.d/ 以下にある。設定を変更する際は php.ini を直接変更するのではなく、新たに差分 ini ファイルを作成して変更箇所だけを記載するのが良い。
ディフォルトでタイムゾーンが"Europe/Zurich"になっているので"Asia/Tokyo"に変更します。
$ sudo nano /usr/local/php5/php.d/99-my.ini date.timezone = Asia/Tokyo $ /usr/local/php5/bin/php -i | grep timezone Default timezone => Asia/Tokyo date.timezone => Asia/Tokyo => Asia/Tokyoコマンドラインで使うにはpathに登録しておく
$ export PATH=/usr/local/php5/bin:$PATHもしくは
$ cd ~ $ nano .bash_profile PATH=/usr/local/php5/bin:$PATH
OS X 標準のphpに戻す
"/etc/apache2/other/+php-osx.conf"の名前を変更するか削除する。名前を変えるといっても拡張子が.confであるとダメなので"+php-osx.conf.none"します。
"/etc/apache2/httpd.conf"にある "# LoadModule php5_module libexec/apache2/libphp5.so"のコメントを解除する。
$ sudo mv /etc/apache2/other/+php-osx.conf /etc/apache2/other/+php-osx.conf.none $ sudo nano /etc/apache2/httpd.confapacheを再起動する。
phpがいらないなら /usr/local/php5* と /usr/local/packager を削除する
$ sudo rm -rf /usr/local/php5* $ sudo rm -rf /usr/local/packager
MySql
Download MySQL Community ServerからMySQLをダウンロードする。ダウンロード時にはアカウントの登録を求められるが特に費用は掛からない。
Mountein Lion のMacならほぼ64-bitなので「Mac OS X 10.X (x86, 64-bit), DMG Archive(mysql-5.X.XX-osx10.X-x86_64.dmg)」をダウンロードする。

ダウンロードしたファイルをマウントしたら、次の順番でインストールする。
- mysql-5.X.XX-osx10.X-x86_64.pkg
- MySQLStartupItem.pkg
- MySQL.prefPane
システム環境設定にMySql開始停止操作のペインが付きます。

PATHの設定
$ export PATH=/usr/local/mysql/bin:$PATHもしくは".bash_profile"を書き換えてしまします。
$ cd ~ $ nano .bash_profile PATH=/usr/local/mysql/bin:$PATH上記の手順でphpをインストールされているなら
PATH=/usr/local/mysql/bin:/usr/local/php5/bin:$PATH
rootパスワードの設定
$ mysqladmin -u root password 'パスワード文字列'
rootでMySQLへログイン
$ mysql -u root -p
phpMyAdmin
コマンドラインだけで色々するには大変なのでPHPも入れたことですしphpMyAdminをインストールします。phpMyAdminから「phpMyAdmin-x.x.x-all-languages.zip」をダウンロードします。
トップページにある
Download x.x.x
ダウンロードしたZipファイルを"/Library/WebServer"にコピー、解凍して、
シンボリックリンク"phpMyAdmin"を作ります。
$ cd /Library/WebServer $ sudo cp /Users/{username}/Downloads/phpMyAdmin-x.x.x-all-languages.zip phpMyAdmin-x.x.x-all-languages.zip $ sudo unzip phpMyAdmin-x.x.x-all-languages.zip $ sudo ln -s phpMyAdmin-x.x.x-all-languages phpMyAdmin"phpMyAdmin"に移動して"config"フォルダーを作りApacheから読み書きができるようにグループを"_www"にします。
"config.sample.inc.php"を"config/config.inc.php"にコピーして、"config"フォルダーごとグループ書き込みを許可します。
$ cd phpMyAdmin $ sudo mkdir config $ sudo chgrp _www config $ sudo cp config.sample.inc.php config/config.inc.php $ sudo chmod -R g+wr configphpMyAdmin.confを"/etc/apache2/other"に作ります。
$ sudo nano /etc/apache2/other/phpMyAdmin.conf
<Directory "/Library/WebServer/phpMyAdmin"> Order allow,deny Allow from all </Directory> Alias /phpMyAdmin /Library/WebServer/phpMyAdminこれでApacheを再起動するとphpMyAdminが使えるようになります。
http://localhost/phpMyAdmin/setup をクリックするとコンフィグレーションファイルの編集ができます。
通常はhttp://localhost/phpMyAdminをクリックする。
2014年2月5日水曜日
[cakephp] jQueryのスクロールアップを使っているとdebug_kitがうまく動かない時の対策
以下のように、Configure::read('debug') == 0 の時以外は禁止にしておく