AD:
Google News用のSitemap.xmlを作成した際のメモです。
fm-labs/cakephp3-sitemapを使用します。
componserでPluginを追加しようとするとcomposerでpackageがないとエラーがでました。
|
composer require fm-labs/cakephp3-sitemap |
なので、直接pluginの中に入れて対応しました。
|
cd app/plugins/ git clone https://github.com/fm-labs/cakephp3-sitemap Sitemap |
compsoser.jsonの編集
|
vi app/compsoser.json "autoload": { "psr-4": { "App\\": "src", "Sitemap\\": "./plugins/Sitemap/src" } }, |
dumpautoloadを走らせる
|
php composer.phar dumpautoload Generating autoload files |
これで、後はreadmeにある通りにcontrollerを作ればうまくXMLが表示されるようになりました。
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
SSL下にあるアプリケーションで、Sessionを情報を引き継ぐフォームを作成したのですが、IEだけ画面遷移するとSessionが引き継がれないことに気づきました。
core.phpに下記の内容を記述して、対応して回避できました。
|
Configure::write('Session', array( 'defaults' => 'php', 'ini' => array('session.cookie_secure' => false, 'session.referer_check' => false), 'checkAgent' => false, )); Configure::write('Security.level', 'low'); |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
先日書いた独自Validationで、そのテスト書く際に地味に悩んだのでメモしておきます。
ちなみに、Fixtureは設定しておいてください。
User.php
下記のようなValidationをTestしたいとします。
|
public function originalValidation(){ if($this->data['User']['hoge']) 以下省略 } |
UserTest.php
Readしてやるとdataの中にデータを渡せるらしい。
|
public function testOriginalValidation(){ $this->User->id = 1; $this->User->read(); $this->assertEquals(true, $this->User->originalValidation()) } |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
Cakephpで構築したサイトにAuthComponentを使用して、ユーザ機能を実装していた際に、
微妙に悩んだのが、UsersControllerの中で、addのアクションだけ、認証の必要なしにアクセスするの方法です。
答えは、beforeFilterに、$this->Auth->allow(‘add’);を入れれば解決でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
class r extends AppController { var $name = 'Users'; var $components = array('Auth'); var $helpers = array('image','Html','Ajax','Javascript','Form'); //初期値の読み込み function beforeFilter(){ $this->Auth->fields = array( 'username' => 'email', 'password' => 'password' ); $this->Auth->loginError = "パスワードもしくはログインIDをご確認下さい。"; $this->Auth->authError = "ご利用されるにはログインが必要です。"; $this->Auth->allow('add'); } function login() { if ($this->Auth->user()) { $this->redirect('/'); } } function logout() { $this->Auth->logout(); $this->redirect('/'); } function add() { if (!empty($this->data)) { if($this->User->save($this->data)) { $this->User->create(); $this->Session->setFlash("当労苦しました。"); $this->redirect('/'); } } } |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0
AD:
CakephpでMysqlで取得したデータのみだけ文字化けの現象がおきましたので、その時の解決法をメモしておきます。
解決法
/app/config/database.phpに文字コードを指定
|
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'pass', 'encoding' => 'utf8' , ← 文字コードを指定 'database' => 'dbname', 'prefix' => '', ); |
上記の設定で解決できました。
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
CakephpでWindowsのローカル環境で開発して、Linuxのサーバに公開したときにひかかったので記載しておきます。
Windowsなど、一部のOSはMysqlは、テーブル名など名前の大文字・小文字は区別しないようです。
Linuxの環境下では、大文字・小文字の区別はするのでCakephpでエラーがでた次第です。
(More…)
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0
AD:
Cakephpのvalidationのごくごく単純な内容でハマった
記述方法について
maxLengthについて
validationの機能は動いていたのですが、下記のエラーがでてしまった。
|
Undefined offset: 0 [COREcakelibsmodelmodel.php, line 2435] |
で、よくよくドキュメントを確認してみると記述方法が間違っていました。
▼間違った記述方法
|
var $validate = array( 'hoge' => array( 'rule' => array('maxLength' => '100'), 'message' => '最大100文字までです。' ) ); |
↓
▼正しい記述方法
|
var $validate = array( 'hoge' => array( 'rule' => array('maxLength','100'), 'message' => '最大100文字までです。' ) ); |
▼間違った理由
その上で数値チェックをしていたので、記述法を同じだと勘違いしていました。
|
var $validate = array( 'age' => array( 'rule' => array('comparison', '>=', 18), 'message' => '18歳以上の方のみ対象です。' ) ); |
単純な間違いなのに、発見するのに30分くらいかかりました。
非常にくやしい。
ドキュメントを読む際に、ああだいたいこうだろうと流し読みしていたから招いたのでしょう。
残念。
Cakephp validationの説明
http://book.cakephp.org/ja/view/134/Core-Validation-Rules
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 2 | Pocket: 0 | Total: 2 | Feedly: 0
AD:
Cakephpの導入
Windowsの開発環境
Apache2.2
PHP5.3
の環境化で、Cakephpを試していたら下記のエラーがでました。
|
Deprecated: Assigning the return value of new by reference is deprecated in |
下記のURLで調査したところ、PHP5.3の環境だとでるようです。
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1993&forum=3
下記のファイルにif文を追加しました。
「cake/libs/configure.php」
|
if (isset($config['debug'])) {  if ($_this->debug) {   error_reporting(E_ALL);   <font color="red">この三行追加</font>   if (error_reporting() > 6143) {    error_reporting(E_ALL & ~E_DEPRECATED);   }   <font color="red">ここまで</font>   if (function_exists('ini_set')) {    ini_set('display_errors', 1);   } |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 12 | Pocket: 1 | Total: 14 | Feedly: 0