タグ

ブックマーク / blog.s-giken.net (17)

  • CakePHP 2.3でファイルのアップロード処理を作る

    CakePHPでファイルアップロードを作る ファイルアップロードの参考サイト CakePHP 2.3でプログラム開発を行っていますが、ファイルのアップロード処理についてググっていたら、下記のサイトに行き当りました。 ほほー。ファイルアップロードにも Pluginがあるのか、と思ったものの、このページではプラグインに頼らない、と書いてありましたので、私も頼らずに実際に作ってみることにしました。(記事が書かれたのが 2011年2月ですので、その後のバージョンアップなどでどうなったかは分かりませんが。) http://lambdagroove.blogspot.jp/2011/02/cakephp.html 簡単なファイルのアップロードであれば下記のページに従って作っていけば、簡単に出来上がります。 http://www.almondlab.jp/labs/1043 上記の方法では、実運用に際し

    CakePHP 2.3でファイルのアップロード処理を作る
  • WYSIWYGエディタのCKEditor 4を設置、カスタマイズ、日本語化の方法を解説

    CKEditorとは? CKEditorとは、Webサイトの入力エリアを WYSIWYG形式のエディタにするツールです。 オープンソースで軽量、かつ、導入の手間が非常に簡単な WYSIWYGエディタで、最古参のエディタの一つです。 かつては「FCKeditor」と称していましたが、バージョン 3になるときに「CKEditor」に改称しました。 WYSIWYGエディタは、各社からいろいろなものが提供されていますが、いろいろと触ってみるのもいいですが、一つのものを選んでじっくり深く掘り下げていく方が多様な使い方に対応できると思います。 そして、その深く掘り下げていく WYSIWYGエディタとして「CKEditor 4」を選んでおけば問題ないと考えています。 CKEditor 4 オフィシャルサイト https://ckeditor.com/ckeditor-4/ ちなみに、2017年11月14

    WYSIWYGエディタのCKEditor 4を設置、カスタマイズ、日本語化の方法を解説
  • CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法

    CakePHP3で、現在処理しているコントローラー名、アクション名を取得したい場合があるかと思います。 例えば、「CakePHP3のCakeDC/Users、Authでログインなしでもアクセスを許可する設定」で記事を書きましたが、ユーザ管理システムを構築する中で、特定のコントローラーの特定のアクションのページは、ユーザ認証をしていないユーザでもページを表示する、という設定をしたいときに、処理しているコントローラー名を取得する必要がでてきます。 そんな時の処理しているコントローラー名、アクション名を取得する方法を解説します。 ※この記事は CakePHP3用の内容になります。CakePHP4用の記事は「CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法」に書いていますので、こちらも合わせて確認してください。 CakePHP3で現在のコントローラーを取得する方法 下

    CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法
  • CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法

    CakePHP3でテンプレート、レイアウトのファイルを指定する方法 CakePHP3でテンプレートファイル(ctpファイル)を指定する方法 CakePHP3では、テンプレートファイル(ctpファイル)を指定しない場合は、デフォルト設定である現在のアクションと同じ名称のテンプレートファイルが読み込まれます。 例えば、「index」というアクションの場合は、「index.ctp」ファイルが読み込まれます。 ですが、アクション名と違うテンプレート名のファイルを利用したい場合や、レイアウトを変更したい場合は、テンプレートファイル名、レイアウト名を指定する必要があります。 具体的には以下のようになります。

    CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法
  • CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得

    CakePHP3では UrlHelperで取得するように変わった 「CakePHP3でファイルのアップロード処理を自作・解説付き・その1」「CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2」でファイルのアップロード処理を作りましたが、その際、アップロードした画像を表示するための画像のパスの取得方法についても調べましたので解説します。 <img src=”【ここ部分のパス】/upload.jpg”> また、取得方法は、CakePHP2では HtmlHelperを使用していましたが、CakePHP3では UrlHelperを使用するように変更になっていますので、CakePHP2の時の記述方法では動かなくなっています。 UrlHelperを使ってサイトの URLを取得する方法 UrlHelperを使ってフォルダのパス、URLを取得する方法を解説します。 UrlHelpe

    CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得
  • CakePHP3のForm Helperの使い方のまとめ

    CakePHP3になり Form Helperの記述方法が変更に CakePHPには、フォーム関連のタグ(テキストボックスやラジオボタン、セレクトボックスなどの入力ボックス)を生成するための専用機能が用意されています。 それが「Form Helper(フォームヘルパー)」と呼ばれるものです。 Form Helperは便利な機能なのですが、CakePHP2から CakePHP3にバージョンアップしてから記述の仕方が少し変わりました。 そのため、CakePHP3ではどのように記述すればいいのか、それをまとめてみました。

    CakePHP3のForm Helperの使い方のまとめ
  • CakePHP3で保存前にバリデーション結果を取得する2つの方法

    CakePHP3で保存前にバリデーション結果を取得する「$topic->errors()」と「$topic->hasErrors()」の 2つの方法 CakePHP3で、データベースに値を保存する前にバリデーションの結果を取得し、その結果によって処理を振り分けたい、そんな場合の方法について解説します。 解説のためのサンプルのテーブル 例えば、下記のような「トピックス」のテーブルがあったとします。 CREATE TABLE `topics` ( `id` int(11) NOT NULL AUTO_INCREMENT, `topics_date` date NOT NULL, `title` text NOT NULL, `body` text NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMA

    CakePHP3で保存前にバリデーション結果を取得する2つの方法
  • CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る

    CakePHP3で他のテーブルのマスタテーブルからセレクトボックスを作る マスタのテーブルを作成し、そのマスタテーブルの情報を基にしてセレクトボックス(プルダウンリスト)を作成する方法を解説します。 具体的には、下記の「Master Roles(権限マスタ)」の項目をテーブルから取得するイメージです。 想定しているテーブル 想定しているテーブルは、以下の「ユーザテーブル」と「権限マスタテーブル」です。 ユーザ情報に、権限マスタから権限情報を編集できるようにしたのち、ユーザ認証機能を実装し、ユーザの持つ権限によって利用できる機能、できない機能を振り分けることを想定しています。 そのために、ユーザ情報の登録の際に「権限」をプルダウン(セレクトボックス)で選択できるようにする、というのが趣旨になります。 【ユーザテーブル】 CREATE TABLE `users` ( `id` int(11)

    CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
    kathew
    kathew 2019/06/06
    回りくどい方法なので調べてみたら、CakePHP3でもfind('list')で同等のデータが取得できた
  • CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法

    CakePHP3で vendorに置いたプラグインを手動で読み込み使う方法解説 CakePHP3でのプラグインは Composerを利用してインストールする方法がメイン CakePHP3で外部のライブラリやプラグインを使う場合は、Composerを使ってインストールしましょう、と書いてあります。 公式サイトや解説してくれているブログなども Composerを利用する方法の解説がほとんどです。 私も下記の様に、Composerを使ってプラグインをインストールする方法を解説しています。 CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法 ですが、自作のライブラリであったり、Composerからインストールするファイルが用意されていないプラグインもありまして、そのようなプラグインをどうやって利用するか、詳しく解説しているサイトが見当たらない状況でした。 そん

    CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法
  • Contact Form 7の使い方・引数で情報を受け渡す方法

    Contact Form 7に引数で情報を受け渡す方法の説明 Contact Form 7には引数で情報を引き渡すことができます Contact Form 7は、WordPressの標準フォームと言われるくらいよく使われているお問い合わせフォームですが、例えば、商品ページから遷移してきた場合は、どの商品ページから来たのかをあらかじめフォームに値を編集しておきたい、と思う場合もあると思います。 Contact Form 7にはそんな設定方法も用意されていますので、その設定方法の説明です。 2014.06.07追記 Contact Form 7使い方の詳細解説については「Contact Form 7使い方詳細解説・WordPressメールフォーム」に書いていますので、そちらを参照してください。 Contact Form 7には引数を引き渡す処理について 作業する箇所は 2か所です。 1.プログ

    Contact Form 7の使い方・引数で情報を受け渡す方法
  • CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説

    $this->log()を使ってログファイルを出力する コントロールやモデル内の変数はログファイルに出力しよう CakePHP3で開発を行う際、変数の中身を確認したい、と思う場面は多々あるでしょう。 ビューのテンプレート上で扱っている変数であれば、そのまま「echo()」関数や「print_r()」関数を使うことで簡単に確認することができます。 ですが、コントローラーや、モデルの中にある変数などは「echo()」関数などで気軽に確認することができません。 そんなときに活用するのがログファイルへの出力です。 $this->log()を使ってログ出力する方法 エラーログとして出力する CakePHP3では、ログファイルへの出力は、下記の様に記述をします。 記述するファイルはコントロールファイルや、モデルの Entityや Tableのファイルに記述をします。 下記の様に記述すると、エラーログに

    CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説
  • CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説

    CakePHP3でサイトの構築をする際に、プログラム全体で使用する定数や変数を設定し、それを呼び出す方法について解説します。 小規模なサイトであれば、定数、共通変数は「bootstrap.php」に書いていく方法があります。 ファイルを分ける必要もないため、シンプルな方法です。 その方法が「bootstrap.phpに変数を設定する方法」です。 ですが、サイトの規模が大きくなると、設定する定数、共通変数も多くなっていき、「bootstrap.php」が肥大化しますので、定数、共通変数は別のファイルに分けて設定する方法もあります。 その方法が「定数、変数を設定するファイルを別にする方法」です。 また、定数、変数を別ファイルにする方法は、もう一つやり方がありまして、それが「定数、変数を設定するファイルを別にする方法・その2」です。 CakePHP4で定数の設定と呼び出し方法の解説(define

    CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説
  • CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法

    CakePHP3でタイムゾーンを指定する手順の解説 CakePHP3の定義ファイルに記載してある「タイムゾーン」の設定は、標準設定では「UTC」になっています。 これを日時間に設定を変更します。 ちなみに、「UTC」は「協定世界時」と呼ばれる世界の標準時刻で、かつて広く使われていました「グリニッジ標準時(GMT)」から置き換えられたものです。 また、日の標準時は「JST」と表現します。 CakePHP3でタイムゾーンの設定をする前に MySQLの設定を確認する 「CakePHP3でタイムゾーンを設定する手順」として開設を行いますが、まず最初に、下記の記事に従って、MySQL側でタイムゾーンの設定がされているか、確認をしてください。 MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も この MySQLのタイムゾーンの設定ができていない場合

    CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法
  • MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も

    CakePHP3でタイムゾーンを指定する手順の解説 MySQLの日時間対応は標準設定ではない MySQLは、初期設定では日時間に対応していませんので、日時間に対応させるためには最初に設定を行っておく必要がある項目です。 Windows環境で使う XAMPPでは、対応されているバージョンもあるようですが、新しいバージョンでは自分で設定をする必要があるようです。 1.MySQLのタイムゾーンの設定の確認 まず始めに、MySQLにタイムゾーンの設定(「time_zone」テーブルの設定)がされているかを確認します。 MySQLの設定確認 MySQLに接続し、下記のコマンドを実行します。

    MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も
    kathew
    kathew 2018/08/20
  • MySQLの「tinyint(1)」の悲劇 Boolean型になるとは...

    MySQLで「tinyint(1)」を設定すると 「tinyint(1)」は「0」と「1」に変わる CakePHPのプログラムを作っていて、登録された値が想定していた値にならず困っていました。 まだまだ CakePHPの初心者の私はプログラムの記述が間違ってるのだとさんざん悩んでいました。 登録する項目は下記の「authority」の項目に「1:システム管理者」「2:マネージャー」「3:オペレーター」「4:一般ユーザ」といった 4種類の権限を保存するというものでした。 ———————— CREATE TABLE IF NOT EXISTS users ( : : authority tinyint(1) NOT NULL DEFAULT ‘1’, : : ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ; ———————— 何度も

    MySQLの「tinyint(1)」の悲劇 Boolean型になるとは...
    kathew
    kathew 2017/12/27
    “「tinyint(1)」の「(1)」は、「1桁」という意味ではなく、「1bit」という意味になります。”そうなの!? INTの括弧数字はゼロ埋めした時の桁数指定なので、意味がバラバラで分かりにくいね…
  • MySQL、CakePHP 2.3で「tinyint(1)」の Boolean型の動作を再確認

    MySQL、CakePHPで「tinyint(1)」のフィールドは Boolean型として認識 MySQLでの「tinyint(1)」のフィールドは Boolean型と認識するが... MySQLの「tinyint(1)」の悲劇 Boolean型になるとは... この記事に「結論が間違っています」コメントをいただきました。 そのために検証を行った結果、「tinyint(1)」のフィールドが「Boolean型」として処理されるのは MySQLの機能ではなく、CakePHPの機能によって起こっていることを確認しました。 ※厳密な表現では、MySQLでは「tinyint(1)」で設定されたフィールドは Boolean型として処理する仕様となっているため、その定義に従って、CakePHPでは「0」「1」しか持てないように処理している、ということになるでしょう。 MySQLの定義については以下参照

    MySQL、CakePHP 2.3で「tinyint(1)」の Boolean型の動作を再確認
    kathew
    kathew 2016/12/15
    CakePHPでチェックボックスを自動生成≒値を真偽値にするならば、TINYINT(1)で定義すれば良い。覚えた
  • CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合

    アソシエーションさせるサンプルコード CakePHPで ID以外のカラム同士でテーブルをアソシエーション(連携)させたい場合の方法について書いておきます。 そもそもは baserCMSでプラグインを作っているとき、いずれの項目もユニークではありつつ、IDにはしたくない項目同士を連携させたい、と思ったことがきっかけでした。 ただ、baserCMSのテーブル連携は、CakePHPとは少し仕様が違うようですので、baserCMSで悩んでいる方は、「baserCMS ID以外のカラムでアソシエーション(連携)をさせる場合」 を参照してください。 (baserCMSは、CakePHPをベースに作られている CMSですので、来はプラグインを作る際も CakePHPのルールに則って作っていきます。) 下記の「details.post_id」と「posts.id」の項目を連携させることは、CakePHP

    CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合
  • 1